繁体   English   中英

将字符串列表更改为字典列表

[英]Change List of string to List of Dict

我有一些有趣的数据:

<class 'list'>
["[{'address': 'sample', 'address2': 'sample2'}]"]

它是一个string list ,我想要一个这样的东西

<class 'list'>
[{'address': 'sample', 'address2': 'sample2'}]

-> Dict List 请问我怎样才能实现它? 顺便提一句。 我不知道dict中有多少pairs ,但里面只有一个dict

最好首先修复序列化程序。

如果这不是一个选项,也许您可以尝试使用 YAML 解析器

>>> import yaml
>>> L = ["[{'address': 'sample', 'address2': 'sample2'}]"]
>>> yaml.safe_load(L[0])
[{'address': 'sample', 'address2': 'sample2'}]

yaml工作正常,但您可以使用ast.literal_eval (内置),这样您就不必安装新的库:

import ast
x = ast.literal_eval("[{'address': 'sample', 'address2': 'sample2'}]")
print(x)
print(type(x))
#[{'address': 'sample', 'address2': 'sample2'}]
#<class 'list'>

这对我有用:

>>> import json
>>> a = ["[{'address': 'sample', 'address2': 'sample2'}]"]
>>> b = [ json.loads(i.replace("'",'"')) for i in a]
>>> b
[[{'address2': 'sample2', 'address': 'sample'}]]
>>> 

如果你确定里面只有一个dict ,事情就变得简单了:

>>> json.loads(a[0].replace("'",'"'))
[{'address': 'sample', 'address2': 'sample2'}]
>>> 

如果你能确定数据的格式,也许你可以简单地将其视为json字符串。

import json

data = ["[{'address': 'sample', 'address2': 'sample2'}]"]
print([json.loads(item.replace("'", '"')) for item in data])


output:
[[{'address': 'sample', 'address2': 'sample2'}]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM