首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >作为字符串存储在列表中的Python字典

作为字符串存储在列表中的Python字典
EN

Stack Overflow用户
提问于 2016-02-01 05:20:07
回答 4查看 2.5K关注 0票数 0

我有一个包含Python字典的txt文件,并以以下方式打开它:

代码语言:javascript
复制
with open('file') as f:
    test = list(f)

当我看测试时,结果是一个元素的列表。第一个元素是字典的一个字符串(其中还包含其他字典),因此它看起来如下:

代码语言:javascript
复制
["ID": 1, date: "2016-01-01", "A": {name: "Steve", id: "534", players:{last: "Smith", first: "Joe", job: "IT"}}

是否有任何方法可以将其存储为字典,而不必找到一种方法来确定不同键和相应值开始/结束的字符的索引?或者是否有可能以将数据识别为字典的方式在文件中读取?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-01 05:26:49

如果正在读取json文件,则可以使用json模块。

代码语言:javascript
复制
import json

with open('data.json') as f:    
    data = json.load(f)

如果您确信正在读取的文件包含python字典,则可以使用内置的ast.literal_eval将这些字符串转换为Python字典:

代码语言:javascript
复制
>>> import ast
>>> a = ast.literal_eval("{'a' : '1', 'b' : '2'}")
>>> a
{'a': '1', 'b': '2'}
>>> type(a)
<type 'dict'>

还有另一种方法,eval。但是使用ast.literal_eval会更好。这个回答会解释原因。

票数 2
EN

Stack Overflow用户

发布于 2016-02-01 05:30:20

您可以使用json模块

用于编写

代码语言:javascript
复制
import json

data = ["ID": 1, date: "2016-01-01", "A": {name: "Steve", id: "534", players:{last: "Smith", first: "Joe", job: "IT"}}
with open("out.json", "w") as f:
    json.dump(data)

用于阅读

代码语言:javascript
复制
import json

with open("out.json", "w") as f:
    data = json.load(f)
    print data
票数 0
EN

Stack Overflow用户

发布于 2016-02-01 05:35:48

当您从文件中读取eval()时,只需使用它。

例如:

代码语言:javascript
复制
>>> f = open('file.txt', 'r').read()
>>> mydict = eval(f)
>>> type(f)
<class 'str'>
>>> type(mydict)
<class 'dict'>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35123449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档