如何在Python中特定文件类型中读取文件到字典

2 投票
2 回答
23130 浏览
提问于 2025-04-17 20:00

具体来说,我有一个文本文件,里面有多行内容,每个条目的关键字是一个组的第一行,接下来是与这个关键字相关的值,最后是一行空行,表示下一个关键字的开始。我在用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']}

撰写回答