python如何读取文本文件并返回字典?

时间:2015-05-17 15:53:10

标签: python dictionary

问题是阅读文本文件并返回如下字典。

这是文本文件

USER fjeen

NAME
Filcon Jeen

EMAIL filcon.jeen@clasic.edu.tr

PHONE 123-234-3333

这应该是回归

 {'fjeen':['Filcon jeen', 'filcon.jeen@clasic.edu.tr','123-234-3333']

这是我尝试过但似乎没有用的。

def read():
with open("profiles.txt","r") as text:
    return dict(line.strip().split() for line in text)

这是错误:

Traceback (most recent call last):

文件" C:\ Program Files(x86)\ Wing IDE 101 5.1 \ src \ debug \ tserver_sandbox.py",第1行,in     #在内部用于外部解释器下的调试沙箱   文件" C:\ Program Files(x86)\ Wing IDE 101 5.1 \ src \ debug \ tserver_sandbox.py",第3行,读取     通过 builtins.ValueError:字典更新序列元素#0的长度为1; 2是必需的

1 个答案:

答案 0 :(得分:0)

如果您的文件是对象的实际Python表示,则应使用ast.literal_eval

  

安全地评估表达式节点或Unicode或Latin-1编码   包含Python文字或容器显示的字符串。字符串或   提供的节点可能只包含以下Python文字   结构:字符串,数字,元组,列表,dicts,布尔值和   无。

import ast
with open("profiles.txt") as f:
    loaded = ast.literal_eval(f.read())

如果您的文件是JSON编码对象,则应使用json.load

  

反序列化fp(.read() - 支持包含文件的文件对象   JSON文档)使用此转换表的Python对象。

import json
with open("profiles.txt","r") as f:
    loaded = json.load(f)