从文件中搜索特定关键字,并使用Python将与其关联的描述添加到不同的文件中

时间:2016-10-11 21:09:36

标签: python file python-3.x

下面的文字文件显示了频道名称的描述&频道事件

desc.txt文件:

Channel Name: CBS
Event Name: FIFA World Cup 2018 Qualifying

Channel Name: BEINSPORTS
Event Name: NFL 

以下Python代码仅查找第一个“事件名称”和相关描述。

flist = open('/tmp/desc.txt').readlines()
    for line in flist:
        if line.startswith("Event Name:"):
            eventname = line[12:-1]                  
            file2 = open('/tmp/test_live.txt','w')
            file2.write(eventname + "\n")

我想要的是以下描述以及我目前所获得的内容 文件中的“FIFA世界杯2018年资格赛”。

test_live.txt

FIFA World Cup 2018 Qualifying
NFL

3 个答案:

答案 0 :(得分:1)

您继续打开同一个文件并向其写入一行。您有两个选择:您可以在循环外打开它(效率更高),并在退出循环时关闭它(您也应该关闭其他open语句)。或者,您可以使用'a'而不是'w'追加打开到文件中。 但我会在进入for循环之前打开它。 除非您使用flist ...

,否则您的循环不应缩进with

注意:我认为通常您应该使用.rstrip()而不是使用\n截断[:-1]。最后一行最后可能没有换行符,您将丢失该字符。

with open('/tmp/desc.txt') as flist:
    file2 = open('/tmp/test_live.txt','w')
    for line in flist:
        if line.startswith("Event Name:"):
            eventname = line[12:-1]                  
            file2.write(eventname + "\n")
    file2.close()

答案 1 :(得分:0)

请注意,您以写入('w')模式打开文件,因此每次迭代都会擦除文件test_live.txt的全部内容。请改为使用追加('a')模式。

答案 2 :(得分:0)

以前的帖子用实施的代码表示了什么。

flist = open('/tmp/desc.txt', 'r').readlines()
file2 = open('/tmp/test_live.txt','a')
for line in flist:
    if line.startswith("Event Name:"):
        eventname = line[12:-1]                  
        file2.write(eventname + "\n")
#Close Open File handlers
flist.close()
file2.close()