仅从Python中的多个条目追加文件

时间:2016-11-10 01:12:45

标签: python

我有一个包含许多行数据,5个索引或列的文本文件。

我正在尝试通读这些行来查找特定字符串,然后将此字符串附加到另一个文件。 我原则上的工作原理,但问题是有时搜索字符串在我正在读取的文件中出现多次,并且我的函数导致写入文件的附加次数与字符串出现的次数相同。

我需要能够搜索字符串,如果它被发现多次,则只有一个条目附加到写入文件。

以下是来自文件的示例代码,我正在搜索的代码:

00:00,19.90,990.49,59.16,11.78,No
01:00,19.92.991.00,59.75,11.90,Yes
02:00,19.76,991.21,58.87,10.95,No
03:00,19.34,989.97,57.00,10.64,Yes

这里是我正在使用的代码,它应该通过上面的代码搜索索引[5]中出现'是' 当它找到“是”这个词的时候,然后将它附加到另一个文件中,但即使有“是”这个词有多个条目,也应该只做一次。

IsWet = 'Yes'
with open(dPath + FileDate + '.txt', 'r') as Precipitation:
    for row in Precipitation:
        if IsWet == str(row.strip().split(',')[5]):
            with open(dPath + 'Wet.txt', 'a') as outfile:
                outfile.write(wDay + ',' + IsWet)

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

使用set()。在遍历文件时添加所需的每一行,然后将每个元素写入文件。

def read_file(file_name):
    with open(file_name, 'r') as fh:
        for line in fh:
            if str(line.strip().split(',')[-1]) == 'Yes':
                yield line

lines = set(read_line(file_name))

with open('output.txt', 'r') as fh:
    for line in lines:
        fh.write(line)

答案 1 :(得分:0)

如果你是肯定的,即使存在多个也只需要一次,你可以简单地break上面的循环并完成,这也有助于提高性能:

IsWet = 'Yes'
with open(dPath + FileDate + '.txt', 'r') as Precipitation:
    for row in Precipitation:
        if IsWet == str(row.strip().split(',')[5]):
            with open(dPath + 'Wet.txt', 'a') as outfile:
                outfile.write(wDay + ',' + IsWet)
            break