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

2024-03-28 08:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的文本文件显示频道名称的说明&;频道事件

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")

我想要的是下面的描述,我现在得到的是 文件中有“2018年国际足联世界杯预选赛”

测试_live.txt

FIFA World Cup 2018 Qualifying
NFL

Tags: 文件nametxt名称eventworldlinechannel
3条回答

以前的帖子用实现的代码指出了什么

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()

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

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

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

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()

相关问题 更多 >