繁体   English   中英

如何在python中将字符串dict转换为dictonary

[英]how to convert string dict to dictonary in python

a= {'Locator__creation_date': {'start': datetime.date(2013, 11, 14), 'end': datetime.date(2013, 11, 14)}, 'Locator__employed': u'True', 'Locator__employer_state': u'AL', 'Locator__receiving_hiv_treatment': u'True', 'Locator__hiv_treatment_state': u'AR', 'Locator__mental_health_provider': u'False', 'Locator__parole': u'True', 'Locator__parole_state': u'IA', 'data_model_name': ['Locator']}

ast.literal_eval(a)

它给

ValueError: malformed string

想必你的意思是a是一个字符串:

a = "{'Locator__creation_date': {'start': datetime.date(2013, 11, 14), 'end': datetime.date(2013, 11, 14)}, 'Locator__employed': u'True', 'Locator__employer_state': u'AL', 'Locator__receiving_hiv_treatment': u'True', 'Locator__hiv_treatment_state': u'AR', 'Locator__mental_health_provider': u'False', 'Locator__parole': u'True', 'Locator__parole_state': u'IA', 'data_model_name': ['Locator']}"

这不起作用,因为datetime.date(...)不是Python文字。 它是Python datetime.date()对象的表示,而ast.literal_eval()不处理任意类型。

只有 Python文字值( {...}用于字典或集合, [...]用于列表, (...)用于元组,数字用于数字和字符串文字,例如u'...'r'...''...'与各种报价变化)处理。 请参阅Python表达式文档ast.literal_eval() 部分ast.literal_eval()文档本身:

提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None

暂无
暂无

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

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