文章が長くなってしまい申し訳ありませんが、できるだけ詳しくお伝えしたいと思います。私はこのトピックについてかなりの量の調査を行っており、自分自身を「中級」の熟練したプログラマーと考えています。
私の問題: 複数行のデータを含むテキスト ファイルがあります。無関係な情報を取り除くために各行の特定の部分を削除し、新しくフォーマットされた行でファイルを保存したいと思います。
これが私が達成しようとしていることの例です。元の行は次のようなものです。
access-list inbound_outside1 line 165 extended permit tcp any host 209.143.156.200 eq www (hitcnt=10086645) 0x3eb90594
コードにテキストファイルを読み取らせ、出力させようとしています:
permit tcp any 209.143.156.200 www
次のコードは機能しますが、テキスト ファイルに 1 行しかない場合に限ります。
input_file = open("ConfigInput.txt", "r")
output_file = open("ConfigOutput.txt", "w")
for line in input_file:
line = line.split("extended ", 1)[1]
line = line.split("(", 1)[0]
line = line.replace(" host", "")
line = line.replace(" eq", "")
output_file.write(line)
output_file.close()
input_file.close()
ただし、複数行のデータの完全なファイルでこれを実行しようとすると、エラーが発生します。
File "C:\Python27\asaReader", line 5, in <module>
line = line.split("extended ", 1)[1]
IndexError: list index out of range
テキスト ファイル内のデータの次の行に移動していないため、前の文字列の [1] には何も含まれていないと思われます。これについて何か助けていただければ幸いです。