下面的文字文件显示了频道名称的描述&频道事件
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
答案 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()