0
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
4

1 回答 1

2

大概你的意思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 文字。它是 Pythondatetime.date()对象的表示,ast.literal_eval()不处理任意类型。

处理Python 文字值({...}对于字典或集合、[...]对于列表、(...)对于元组、数字到数字和字符串文字,例如u'...'r'...''...'带有各种引号变体)。请参阅Python 表达式文档的 Literals 部分ast.literal_eval()文档本身:

提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和None.

于 2013-11-12T12:21:08.787 回答