Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以Python特定的文件类型将文件读入字典_Python_Dictionary_While Loop - Fatal编程技术网

如何以Python特定的文件类型将文件读入字典

如何以Python特定的文件类型将文件读入字典,python,dictionary,while-loop,Python,Dictionary,While Loop,具体地说,我有一个文本文件,它有多行排列,因此每个条目的键都是组的第一行,后面是它的相关值,后面是下一个键之前的换行符。我很难用while循环来实现这一点 例如,第一行可能是一个餐厅名称,后面是几行在那里用餐的顾客,然后我需要将其写入字典中餐厅名称键下的值中 我真的不熟悉文件读取,所以我担心我所拥有的不会有任何帮助 我猜是这样的,但它甚至没有达到半功能的程度 编辑:感谢我本应该澄清的回答,对应键的每个值项都列在该键之后的后续行中,下一个键之前的列表末尾有一个空行。不幸的是,我不得不在这里使用re

具体地说,我有一个文本文件,它有多行排列,因此每个条目的键都是组的第一行,后面是它的相关值,后面是下一个键之前的换行符。我很难用while循环来实现这一点

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

我真的不熟悉文件读取,所以我担心我所拥有的不会有任何帮助

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

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

    restaurants = {}
    patrons = []

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

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

编辑:根据新问题规范进行修订

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
循环重写为
,而
循环一次读取一行,直到EOF。

编辑:根据新的问题规范进行修订

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
循环重写为
,而
循环每次读取一行,直到EOF。

假设您的文本文件如下所示

麦当劳比尔·波·鲍勃

依照

我有一个多行排列的文本文件,以便 每个条目都是组的第一行,后面是相关的 值,后跟换行符

那会产生什么

{'mcdonalds': ['bill', 'bo', 'bob']}

假设您的文本文件如下所示

麦当劳比尔·波·鲍勃

依照

我有一个多行排列的文本文件,以便 每个条目都是组的第一行,后面是相关的 值,后跟换行符

那会产生什么

{'mcdonalds': ['bill', 'bo', 'bob']}

请编辑您的帖子以包含您尝试的解决方案。大家会给你指出正确的方向。另外,你能提供一个输入和输出的例子吗?为什么你“不幸地被迫在这里使用readline方法”而不是
readlines()
方法?请编辑你的文章,包括你尝试的解决方案。大家会给你指出正确的方向。另外,你能提供一个输入和输出示例吗?为什么你“不幸地被迫在这里使用readline方法”而不是
readlines()
方法?