簡體   English   中英

從文本文件中提取行

[英]extracting lines from a text file

我正在學習python,並且試圖解決一些簡單的問題以獲得更好的結果。 我有兩個長度相同的文件,我已經從第一個文件中提取了我想從第二個文件中提取的行。 所以現在我要從第二個文件中讀取的每一行都有一個像[0,1,0,0,1,...]的數組。 將這些行僅復制到第三個文件的最佳方法是什么? 這是我的代碼,但是在編寫行時出現錯誤:

f = open('file.txt')
f2 = open('file2.txt', 'wb')
data = f.readlines()
for i in range(len(array)):
    if array[i]==1:
        f2.write(f[i])

您可以使用compress從迭代器中選擇元素:

from itertools import compress

l = [0, 1, 0, 1, 1, ...]     # your list
with open('second.txt') as src, open('third.txt', 'w') as dst:
    dst.writelines(compress(src, l))

您可能需要將列表和文件壓縮在一起:

for should_output, line in zip(array, f):
    if should_output:
        f2.write(line)

zip適用於任意數量的可迭代對象,並將相應的元素組合到一個可迭代的元組中,例如:

>>> zip([1, 2, 3], [4, 5, 6])
[(1, 4), (2, 5), (3, 6)]

您可能還需要考慮使用with語句來打開文件,例如:

with open('input.txt', 'r') as input, open('output.txt', 'w') as output:
    for should_output, line in zip(array, input):
        if should_output:
            output.write(line)

您的方法的問題在於文件不可索引(就像您嘗試在f[i] )。 幸運的是,您已將所有行讀入列表data 如果您想采用與當前方法更相似的方法,則可以簡單地將f[i]替換為data[i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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