我想知道,如果可以将此代码的输出保存到字典中(也许它也是错误的数据类型)。我还没有在编码方面有所考验,所以我无法想到它可以运作的方式。 我想创建一个dicitionary,其中包含txt.-文件的行以及相应行的值。最后,我想创建一个代码,用户可以选择通过输入搜索行中的单词 - 输出应该返回相应的行。有人有什么建议吗?提前致谢!干杯!
filepath = 'myfile.txt'
with open(filepath) as fp:
line = fp.readline()
cnt = 1
while line:
print("Line {}: {}".format(cnt, line.strip()))
line = fp.readline()
cnt += 1
答案 0 :(得分:1)
这应该这样做(使用您作为框架提供的代码,只需要一行额外的行将其存储在字典中):
my_dict={}
filepath = 'myfile.txt'
with open(filepath) as fp:
line = fp.readline()
cnt = 1
while line:
# print("Line {}: {}".format(cnt, line.strip()))
my_dict[str(line.strip())] = cnt
line = fp.readline()
cnt += 1
然后,您可以提示用户输入如下:
usr_in = input('enter text to search: ')
print('That text is found at line(s) {}'.format(
[v for k,v in my_dict.items() if usr_in in k]))
答案 1 :(得分:1)
要将字符串值作为键存储在字典中,将行号存储为值,您可以尝试类似:
filepath = 'myfile.txt'
result_dict = {}
with open(filepath) as fp:
for line_num, line in enumerate(fp.readlines()):
result_dict[line.strip()] = line_num+1
或者,使用dictionary comprehension
,上面的代码可以是:
filepath = 'myfile.txt'
with open(filepath) as fp:
result_dict = {line.strip(): line_num+1
for line_num, line in enumerate(fp.readlines())}
现在搜索并返回包含单词的所有行:
search_result = [{key: value} for key, value in result_dict.items()
if search_word in key]