【发布时间】:2018-10-02 14:09:23
【问题描述】:
我创建了一个脚本,它将在目标文件中搜索关键字。如果该关键字在某一行文本上,它将获取整个文本并返回不包含该关键字的行的其余部分。例如,如果有一行文字说:
Title: Useless Data
那么脚本将只获取“无用数据”部分并将其附加到列表中。它会对文件中出现“title”一词的每个位置执行此操作。
脚本如果只运行一次从文件中获取几行并将它们输出到一个列表中是成功的,但是我想在文件中搜索两个关键词:标题和图标,然后将标题压缩到相应的图标.因此,如果我采用如下所示的一行文本:
LINE 1:
Title: Useless Data
Icon: Fairly upset programmer
Index: 12
filler data:
LINE 2:
Title: Line 2
Icon: Pancho
Index: 69
filler data:
输出应该是:
list1 = ['Useless Data', 'Line 2']
list2 = ['Fairly upset programmer', 'Pancho']
然后我想将它们压缩成一个如下所示的字典:
final_dict = {'Useless Data' : 'Line 2', 'Fairly upset programmer': 'Pancho'}
title_list = {}
target_file = open('Meta.txt', 'r')
# Searches for word in a line and removes all the useless data
def splitter(files, word):
output = []
for line in files:
if word in line:
output.append(line.split(':')[1].replace('\n', '').strip())
else:
continue
print(output)
return output
split1 = splitter(target_file, 'icon')
split2 = splitter(target_file, 'title')
final = zip(split1, split2)
【问题讨论】:
-
你应该使用
for line in files.readlines(): -
@Bazingaa:不,他们不应该。
-
输出有什么问题?是 zip 还是您的拆分器功能的问题?
-
那个“文本行”看起来像 10 行不是一个,所以不清楚你在说什么。
-
在
splitter函数的顶部尝试files.seek(0)。第一次运行函数时,您正在耗尽文件迭代器对象