ひさふぃの日記

DjangoとPythonとLaravelが好き。大阪でフリーランスエンジニアやってます。

入門Python3のメモ 7章|プロのようにデータを扱う

Pythonの入門書として各所でオススメされている入門Python3。

shikouno.hatenablog.com

前半7章までで基本をおさらいし、後半8章からは他分野で活用できそうなちょっとした応用編がオールインワン。みんなのPython 第4版の次に読むとちょうどいいレベル感。

その際、初めて知る箇所や曖昧でいつも検索する箇所を後で見返せるようにメモしておこうかと。

そのため、このメモは僕の知識的偏りから生み出されたものであることを最初にお断りしておきます。気になった方は書籍を購入してください。

入門 Python 3

ちなみに、1章は導入なのでメモがありませんが、1.2 Pythonと多言語の比較は面白いので必見!著者の冗談も随所に入っていて、面白くていい本です。

英語版はPDFが無料で公開されています。よろしければ!

Introducing Python

正規表現とパターンマッチング

正規表現を使う場合、reモジュールをインポートする。

各メソッドは、第1引数に検索に用いる文字や正規表現、第2引数に検索対象の文字列を取る。

また、マッチングのスピードを上げるために、re.compile()によって第1引数をコンパイルしてしまう方法もある。

match()は文字列先頭のパターンがマッチするか、search()は文字列中で最初に出てくるパターン、findall()は文字列中に出てくるすべてのパターン、を返します。

コード例ではmatch()の場合にre.compile()で予めコンパイルした方法を用いている。

>>> import re
>>> spam = re.compile('spam')
>>> menu = "spam egg sausage spam"
>>> spam.match(menu)
<_sre.SRE_Match object; span=(0, 4), match='spam'>
>>> spam.match(menu).group()
'spam'
>>> re.search("egg", menu)
<_sre.SRE_Match object; span=(5, 8), match='egg'>
>>> re.search("egg", menu).group()
'egg'
>>> re.findall("spam", menu)
['spam', 'spam']

split()は文字列を分割し、sub()は文字列を置換する。

コード例ではsub()の場合にre.compileで予めコンパイルした方法を用いている。

>>> import re
>>> spam = re.compile('spam')
>>> menu = "spam egg sausage spam"
>>> re.split(' ', menu)
['spam', 'egg', 'sausage', 'spam']
>>> spam.sub("beef", menu)
'beef egg sausage beef'

特殊文字は201ページ、メタ文字は203ページに一覧表がある。単純暗記は無理なので付箋でも貼って、使う必要に迫られたときに都度参照して少しずつ覚えていくのがいいかも。

\s:1個の空白文字、$:ソース文字列の末尾。この辺りは使い方が想像できそうでよく使いそうな気がしますね。

さいごに

正規表現は勉強しだすとキリがないため、おいしいところだけさらって活用していきたいですね。

最後までお読みいただきありがとうございます。それじゃ!

入門 Python 3

入門 Python 3