非常に大きなテキストファイルがあり、いくつかの行を除外したい。最初の行は、識別子であり、この例のような多くの行(異なるライン内の数字)が続いている。この行は、識別子であるPythonでテキストファイルの一部を削除する
fixedStep ch=GL000219.1 start=52818 step=1
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
fixedStep ch=GL000320.1 start=52959 step=1
1.000000
1.000000
1.000000
fixedStep ch=M start=52959 step=1
1.000000
1.000000
:fixedStep ch=GL000219.1 start=52818 step=1
私はすべての識別子の行をフィルタリングする
例ch=GL000219.1
とch=GL000320.1
と以下の行(数字)を含み、それらの下に他の識別子と対応する行(数字)を保持します。各識別子は複数回繰り返されます。 この出力のように:
fixedStep ch=M start=52959 step=1
1.000000
1.000000
私はこのコードを試してみました:
l = ["ch=GL000219.1", "ch=GL000320.1"] # since I have more identifiers that should be removed
with open('file.txt', 'r') as f:
with open('outfile.txt', 'w') as outfile:
good_data = True
for line in f:
if line.startswith('fixedStep'):
for i in l:
good_data = i not in line
if good_data:
outfile.write(line)
私のコードは、私が欲しいものを返しません。あなたはコードを修正する方法を知っていますか?
はgood_data'下= Iないline'に 'break'を追加します。 'good_data'はそれ自体が上書きされるので、1行に複数の値をとることができるので、' i'の最後の値に対して 'True'でなければなりません – roganjosh
また、' good_data'はすべての行に対してリセットする必要がありますか? – roganjosh
私は試しましたが、違いはありません。 – john