具体来说,我有一个文本文件,其中排列了多行,以便每个条目的键是组的第一行,后跟其相关值,后跟下一个键之前的换行符。我使用while循环很难用readline来完成这个。
例如,第一行可能是餐馆名称,后面是几行在那里吃的客户,然后我需要在餐馆名称的键下写入字典的值。
我真的不熟悉文件阅读,所以我担心我所拥有的东西根本不会有帮助。
我猜这样的事情,但它甚至没有达到半功能的程度。
编辑:感谢您应该澄清的回复,相应密钥的每个值项都列在后面的后续行中,并且在下一个键之前的列表末尾有一个空行。此外,我不幸被迫在这里使用readline方法。
restaurants = {}
patrons = []
line = file.readline()
s = line.strip('\n')
while s != ''
restaurant = s
line = file.readline
patrons.append(s)
答案 0 :(得分:6)
假设您的文本文件看起来像这样
麦当劳法案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']}
答案 1 :(得分: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
循环,该循环一次读取一行直到EOF