[英]How to write specific lines of a text to a new file?
我有一個文本文件,我想從中查找特定行並將其寫入新文件。 文字看起來像這樣:
1552311_a_at NA 6.548202118 6.795958567 6.525295817 6.467153775
1552312_a_at NA 7.237622005 7.501887409 7.438287339 7.249551462
1552334_at NA 5.36199913 5.554097857 5.296649894 5.64695338
我之前沒有做過很多問題,但是出於某種原因,在這種情況下它對我不起作用。 我在文本文件中要提取的值列表。
import fileinput
x = open('file', 'r')
y = open('file_write', 'w')
z = [...,...,...] #list of values to search for in file given by user
def file_transform(filein,fileout,list):
for i in list:
for line in filein:
if list[i] in line:
fileout.write(line)
file_transform(x,y,z)
file.close()
file_write.close()
該腳本運行,但是最終我得到一個空的新文本文件。 我不明白我要去哪里錯了。
您可以在同一文件中未循環多次使用,而不“倒帶”,還你濫用對列表循環:
def file_transform(filein,fileout,z):
for i in z:
for line in filein:
if i in line:
fileout.write(line)
filein.seek(0)
或者更好:
def file_transform(filein,fileout,z):
for line in filein:
for i in z:
if i in line:
fileout.write(line)
當您for i in z
i進行操作時for i in z
實際上包含列表元素而不是索引。 欲了解更多信息,請參閱本 。
list
不是任何變量的好名字,因為list
是python中的對象類型。
with open('file', 'r') as f:
x = f.readlines() # this auto closes the file after reading, which is better practice
y = open('file_write', 'w')
def file_transform(filein, fileout, z):
for line in filein:
for i in z:
if i in line:
fileout.write(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.