[英]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.