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ファイルへの書き込み確認
このようなプログラムはよく利用すると思うので覚えておきましょう。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す