スポンサーリンク
ファイルオープンしてreadlines()で1行ずつ読み込む
まずは、ファイルオープンしてreadlines()で1行ずつ読み込みます。
close忘れをなくすためにも、with open ~ as ~ の形式が便利だと思います。
1行ずつ読み込んだ結果はlineListに格納されます。
この後、lineListをforループ処理します。
with open('in.txt','r') as f: lineList = f.readlines()
スポンサーリンク
1行ずつforループ処理してreモジュールで検索
reモジュールをimportします。
import re
1行ずつforループ処理してre.search() で検索します。
例えば、下記のように
a~cの文字列、もしくは1~3の文字列を含んだ場合には、その行をprint出力します。
1行には改行も含まれているため、end=""と指定してprint出力時の改行は付けないようにします。
参考:[Python]改行なしでprint出力する(end=”を設定)
for line in lineList: if re.search(r'[a-c]|[1-3]', line): print(line, end="")
サンプルコード
下記がサンプルコードになります。
$ cat sample.py #!/usr/bin/env python3 # coding: UTF-8 import re with open('in.txt','r') as f: lineList = f.readlines() for line in lineList: if re.search(r'[a-c]|[1-3]', line): print(line, end="")
下記が実行結果になります。
$ ./sample.py a98b0s d39l9 8c9l9
grepを使った検索
上記Pythonの処理を、grepを使うと下記のようになります。
$ grep "[a-c]\|[1-3]" in.txt
下記が実行結果になります。
$ grep "[a-c]\|[1-3]" in.txt a98b0s d39l9 8c9l9
grepコマンドのor検索時には、正規表現の”|”の前にバックスラッシュ”\”が必要になります。下記の参考記事を書いています。
参考:grepコマンドのor検索時には、正規表現の”|”の前にバックスラッシュ”\”が必要なので注意が必要(しばらく経つと忘れがち)
スポンサーリンク