1

具体来说,我有一个包含多行排列的文本文件,以便每个条目的键是组的第一行,然后是其相关值,然后是下一个键之前的换行符。我很难使用 while 循环来通过 readline 完成此操作。

例如,第一行可能是餐厅名称,然后是几行在那里用餐的顾客,然后我需要将其写入到餐厅名称键下的字典的值中。

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

我猜是这样的,但它甚至还没有到半功能的地步。

编辑:感谢您的回复,我应该澄清一下,对应键的每个值项都列在键之后的后续行中,该列表末尾的空行位于下一个键之前。此外,不幸的是,我不得不在这里使用 readline 方法。

    restaurants = {}
    patrons = []

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

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

2 回答 2

6

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

麦当劳比尔鲍勃

按照

我有一个包含多行排列的文本文件,以便每个条目的键是组的第一行,然后是其相关值,然后是换行符

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']}
于 2013-03-22T19:32:30.550 回答
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 的循环。

于 2013-03-22T19:28:37.603 回答