如何在Python特定文件类型中将文件读入字典

时间:2013-03-22 19:01:48

标签: python dictionary while-loop

具体来说,我有一个文本文件,其中排列了多行,以便每个条目的键是组的第一行,后跟其相关值,后跟下一个键之前的换行符。我使用while循环很难用readline来完成这个。

例如,第一行可能是餐馆名称,后面是几行在那里吃​​的客户,然后我需要在餐馆名称的键下写入字典的值。

我真的不熟悉文件阅读,所以我担心我所拥有的东西根本不会有帮助。

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

编辑:感谢您应该澄清的回复,相应密钥的每个值项都列在后面的后续行中,并且在下一个键之前的列表末尾有一个空行。此外,我不幸被迫在这里使用readline方法。

    restaurants = {}
    patrons = []

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

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

2 个答案:

答案 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