txt出力ファイルから特定の行を抽出しようとしています。私が興味を持っているのは、結果を検索するために使用しているkey_stringの上のほんの少し上の行といくつかの行です。キーストリングは各結果について同じです。Python:リスト内の重複した項目を一意のインデックスで参照する
fi = open('Inputfile.txt')
fo = open('Outputfile.txt', 'a')
lines = fi.readlines()
filtered_list=[]
for item in lines:
if item.startswith("key string"):
filtered_list.append(lines[lines.index(item)-2])
filtered_list.append(lines[lines.index(item)+6])
filtered_list.append(lines[lines.index(item)+10])
filtered_list.append(lines[lines.index(item)+11])
fo.writelines(filtered_list)
fi.close()
fo.close()
出力ファイルには、最初のレコードの右側の行が含まれていますが、利用可能なすべてのレコードに掛けられています。個々のレコードをすべて読み取れるようにインデックスを更新するにはどうすればよいですか?私は解決策を見つけようとしましたが、初心者のプログラマーとしてenumerate()関数またはコレクションパッケージを使用するのに苦労していました。
ありがとうRyszard!これはまさに私が探していたものでした。問題は、抽出されたデータが、出力ファイルのレコード数で複製された最初のレコードだけだったことです。これは、python 'list.index'メソッドにはいくつかの制限があるためです。 python 3.6のドキュメントの 'list.index'メソッドの説明の下の部分は、「返されるインデックスは、start引数ではなく、完全なシーケンスの先頭から相対的に計算されます。」 – Bart