【Python】ファイルからfindメソッドを利用して文字列を抽出とファイル書き込みまで


Pythonでファイルの中の特定の文字列を抽出して、さらに別ファイルに書き込みたいということで、プログラムを書いてみました。


findメソッドを利用して文字列を抽出し、別ファイルに書き込む方法

今回は、findメソッドを使用して特定の文字列を取得するようにします。

このPythonのfindメソッドですが、文字列の中に指定した文字列が存在するか、ある場合はその位置情報を教えてくれるメソッドおなります。
このfindメソッドはよく使うので必ず覚えておいたほうがいいです。

ファイルの中のデータから特定の文字列を抽出

今回は以下のような、「log.txt」の中身から特定の文字列を検索してその行の文字列を抽出するプログラムとなります。
ファイルはSWなどから取得したコンフィグファイルです。

ネットワークエンジニアの方にとってみれば、よく見るやつですね。

※ log.txt


......

interface port-channel1
  switchport
  switchport mode trunk
  speed 1000
  vpc 1

interface port-channel2
  switchport
  switchport mode trunk
  speed 1000
  vpc 2

interface port-channel3
  switchport
  switchport mode trunk
  speed 1000
  vpc 3

......

この、コンフィグファイルから特定の以下の文字列を抽出します。
「interface port-channel」

文字列を取得する先のファイルは、「xlsx」以外の拡張子はほぼいけました。

※re-test.py

with open('log.txt', 'r', newline='') as f:
    lines = f.readlines()

    for line in lines:
        if line.find('interface port-channel') >= 0:
            print(line[:-1])

※実行結果

C:\Python>python re-test.py
interface port-channel1
interface port-channel2
interface port-channel3
interface port-channel4
interface port-channel5
interface port-channel6


findで読み取ったデータをファイルに書き込む

上記で、うまく文字列の抽出ができれば、あとはファイルへの書き込みを実行します。
以下のプログラムでは、読込先のファイルと、書き込み先のファイルを同時に開き、抽出した文字列を書きこむようになっています。

with open('ifile.csv', 'r', newline='') as f, \
        open('ofile-test.csv', 'w') as o:
        lines = f.readlines()

        for line in lines:
            if line.find('interface port-channel') >= 0:
                print(line[:-1], file=o)

print('「ofile-test.csv」への書き込み完了')

※実行結果

C:\Python>python re-test.py
「ofile-test.csv」への書き込み完了

C:\Python>

csvファイルへの書き込み確認

このようなプログラムはよく利用すると思うので覚えておきましょう。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!