簡體   English   中英

如何將文本的特定行寫入新文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM