如何在Python中特定文件类型中读取文件到字典
具体来说,我有一个文本文件,里面有多行内容,每个条目的关键字是一个组的第一行,接下来是与这个关键字相关的值,最后是一行空行,表示下一个关键字的开始。我在用while循环和readline来处理这个问题时遇到了困难。
比如,第一行可能是一个餐厅的名字,接下来是几行在那儿用餐的顾客的名字,我需要把这些顾客的名字写入一个字典中,字典的键是餐厅的名字。
我对文件读取不太熟悉,所以我担心我现在的做法根本没有帮助。
我想大概是这样的,但现在的代码连半功能都算不上。
编辑:谢谢你的回复,我应该澄清一下,每个关键字对应的值项都是在关键字后面的几行中列出的,最后有一行空行,表示下一个关键字的开始。此外,我不幸的是必须使用readline的方法。
restaurants = {}
patrons = []
line = file.readline()
s = line.strip('\n')
while s != ''
restaurant = s
line = file.readline
patrons.append(s)
2 个回答
0
编辑:根据新的问题说明进行了修订。
with open("filename") as f:
lines = f.readlines()
restaurants = {}
current_key = None
for line in lines:
line = line.strip()
if not line:
current_key = None
elif not current_key:
current_key = line
restaurants[current_key] = []
else:
restaurants[current_key].append(line)
如果你说的是真的,出于某种原因你真的不能在这里使用 readlines()
,那么可以把 for
循环改成 while
循环,一次读取一行,直到文件结束。
7
假设你的文本文件内容是这样的:
mcdonalds bill bo bob
根据
我有一个文本文件,里面有多行内容,每组的第一个行是这个组的关键字,后面是相关的值,最后以换行符结束。
my_dict = {}
with open("rest.txt", 'r') as f:
for line in f:
items = line.split()
key, values = items[0], items[1:]
my_dict[key] = values
print my_dict
这样会产生
{'mcdonalds': ['bill', 'bo', 'bob']}