Python ドキュメントより自分用の抜粋。
文字列メソッド
操作内容 | 表現 |
---|---|
部分文字列の出現回数をカウント | str.count(sub[, start[, end]]) |
部分文字列の位置走査 | str.find(sub[, start[, end]]) # 見つからなければ-1 |
部分文字列の位置走査 | str.index(sub[, start[, end]]) # 見つからなければエラー |
右揃えした文字列を返す | str.rjust(width[, fillchar]) # widthが元の文字列以下だと文字列をそのまま返す |
指定文字で区切った単語リストを返す | str.split(sep=None, maxsplit=-1) |
文頭と文末の削除 | str.strip([chars]) |
指定文字の置換 | str.replace(old, new[, count]) # countで置換回数指定 |
文字列が英字や数字の特定条件に合致するか | str.is---() |
find() メソッドは、部分文字列の位置を知りたいときにのみ使い、部分文字列であるかどうかのみを調べるには、in演算子を使う。
find, index, just, split, strip は右からか左からかの違いを持つメソッド(名前に「r」か「l」がつく)がある。
正規表現(reモジュール)
reモジュールの使い方
reモジュールを使って文字列を検索する方法は、reが持っているメソッドを使う方法と正規表現オブジェクトを使う方法の二通りがある。何回も同じパターンで検索する場合は、パターンをコンパイルする後者の方法が効率的なようです。
reモジュールのメソッドを使う
操作内容 | 表現 |
---|---|
パターンを検索 マッチオブジェクトを返す(マッチしなければNone) |
re.search(pattern, string, flags=0) # re.matchは文頭だけを検索 |
パターンで置換 | re.sub(pattern, repl, string, count=0, flags=0) |
マッチした文字列リストを返す(マッチしなければ空リスト) | re.findall(pattern, string, flags=0) |
コンパイルして正規表現オブジェクトを使う
操作内容 | 表現 |
---|---|
パターンをコンパイル 正規表現オブジェクトを返す |
regex = re.compile(pattern, flags=0) |
パターンを検索 マッチオブジェクトを返す(マッチしなければNone) |
regex.search(string[, pos[, endpos]]) # 「regex.match」は文頭だけを検索 |
マッチした文字列リストを返す(マッチしなければ空リスト) | regex.findall(string[, pos[, endpos]]) |
マッチオブジェクトのメソッド
操作内容 | 表現 |
---|---|
マッチした部分を表示 正規表現で()を使った部分ごとに表示 |
match.group([group1, ...]) # match.groups()はタプルで分けて表示 |
文字を表す正規表現
表現 | 意味 |
---|---|
\s | 空白 |
\S | 空白ではない |
\d | 数字 |
\D | 数字ではない |
\w | 英数字 |
\W | 英数字ではない |
\A | 文字列の先頭 |
\Z | 文字列の末尾 |
メタ文字を表す正規表現
表現 | 意味 |
---|---|
^ | 行頭 |
$ | 行末 |
. | 任意の一文字 |
\ | エスケープ |
() | まとめる |
\ | いずれか |
繰り返しを表す正規表現
表現 | 意味 |
---|---|
* | 0回以上 |
+ | 1回以上 |
? | 0または1 |
.*? | 最小範囲 |
{a} | a回 |
{a,} | a回以上 |
{a, b} | a~b回 |
使用例
>>> import re >>> test = '1abcdefg2hijklmn3opqrstu4vwxyz5' >>> mobj = re.search('(\d\w).*?(\d\w)', test) >>> mobj.groups() ('1a', '2h') >>> re.findall('\d\w', test) ['1a', '2h', '3o', '4v'] >>>