Pythonでファイルの中の文字列を検索してみる

Pythonを使ってテキストファイルの中の文字列を検索して、その位置(行)を調べてみました。

目次

  1. テキストファイルを読み込む
  2. 文字列を検索する

テキストファイルを読み込む

まず、テキストファイルを読み込んで、行毎のリストを作ります。 ioモジュールのreadlinesメソッドを使います。

L = file.readlines(hint)
変数 内容
file 読み込むファイルオブジェクト
hint 読み込む行数。既定値は-1(全部)
L 行のリスト

イテレータとしても使えるようなので、リストの内包表記にしてみます。

題材として、青空文庫からダウンロードした夏目漱石の「こころ」のテキストファイルを、テキストエディタで改行コードと文字コードをLFとUTF8Nに変換したものを読み込んでみます。

>>> with open('kokoro-utf8n.txt', mode='r', newline='', encoding='utf-8') as f_in:
...     lines = [line for line in f_in]

これでlinesというリストに「こころ」の各行が読み込まれました。

文字列を検索する

試しに「鎌倉」という文字が出てくる行を調べてみます。

forでリストから要素(1行の文字列)を取り出して、inでその文字列に検索対象の文字が存在するか調べます。もし検索文字が含まれていたら、indexを調べて表示します。

>>> for i in lines:
...     if '鎌倉' in i:
...         print(lines.index(i))
...
23
24
25
46
52
54
1566

テキストエディタで「鎌倉」を検索してみましたが、合ってました。

広告

Pythonのファイル入出力カテゴリの投稿