2013-03-22 94 views
1

具体来说,我有一个文本文件,其中包含多行安排,以便每个条目的关键字是组的第一行,其后是相关值,后面是换行符下一个关键。我很难用while循环来完成readline。如何将文件读取到Python特定文件类型的字典中

例如,第一行可能是餐厅名称,然后是几行客户,然后我需要在餐厅名称的关键字下写入字典的值。

我真的不熟悉文件阅读,所以我害怕我所拥有的并不是真正的帮助。

我猜这样的事情,但它甚至没有达到半功能。

编辑:感谢我应该澄清的答复,对应键的每个值项在后面的行中列出,后面的行在下一个键前面的列表末尾有一个空行。不幸的是,我不得不在这里使用readline方法。

restaurants = {} 
    patrons = [] 

    line = file.readline() 
    s = line.strip('\n') 

    while s != '' 
    restaurant = s 
    line = file.readline 
    patrons.append(s) 
+5

请编辑您的帖子,包括你的一个解决方案的尝试。人们会指出你在正确的方向。 – bernie 2013-03-22 19:06:11

+3

另外,你能提供一个输入和输出的例子吗? – drekyn 2013-03-22 19:09:01

+0

与“readlines()”方法相反,你为什么“不幸地被迫在这里使用readline方法”? – 2013-03-22 20:06:41

回答

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。

5

假设您的文本文件看起来像这样

麦当劳账单博鲍勃

我有布置成多行的文本文件的 关键每个条目是组中的第一行,后跟相关的 值,后面是换行符

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']}