ast.literal_eval() 在具有空键值的字典上
ast.literal_eval() on a dict which has a null key value
我正在尝试使用 literal_eval() 将字符串转换为字典,我在这里面临的唯一问题是其中一个字典值中有一个空值。
attributes = '{"New Value": "United States", "Old Value": null, "Reason": "lorem ipsum", "Source": "Action"}'
这是我的输入字典,我在传递给 literal_eval() 之前将其转换为字符串。
当我使用代码进行文字评估时:
attributes_new = ast.literal_eval(attributes)
代码运行时出现此错误:
ValueError: malformed node or string: <ast.Name object at 0x1066efa30>
有什么办法可以用None替换这个null,这样它就不会失败,或者如果有更好的优化解决方案,欢迎提出。提前致谢。
attributes_new = ast.literal_eval(attributes.replace('null', 'None'))
...我会这样做,因为它简单易读。
编辑:我刚刚注意到它看起来很像 JSON。也许改用 json.loads
。
你可以用两种方法来解决这个问题-
- 使用json包
您可以使用直接 jason.load pacakge 如下删除 null
import json
attributes_None = json.loads(attributes)
- 使用ast包
首先,您必须将 null 替换为 None
import ast
attributes = attributes.replace('null','None')
new_attributes = ast.literal_eval(attributes)
我正在尝试使用 literal_eval() 将字符串转换为字典,我在这里面临的唯一问题是其中一个字典值中有一个空值。
attributes = '{"New Value": "United States", "Old Value": null, "Reason": "lorem ipsum", "Source": "Action"}'
这是我的输入字典,我在传递给 literal_eval() 之前将其转换为字符串。 当我使用代码进行文字评估时:
attributes_new = ast.literal_eval(attributes)
代码运行时出现此错误:
ValueError: malformed node or string: <ast.Name object at 0x1066efa30>
有什么办法可以用None替换这个null,这样它就不会失败,或者如果有更好的优化解决方案,欢迎提出。提前致谢。
attributes_new = ast.literal_eval(attributes.replace('null', 'None'))
...我会这样做,因为它简单易读。
编辑:我刚刚注意到它看起来很像 JSON。也许改用 json.loads
。
你可以用两种方法来解决这个问题-
- 使用json包
您可以使用直接 jason.load pacakge 如下删除 null
import json
attributes_None = json.loads(attributes)
- 使用ast包
首先,您必须将 null 替换为 None
import ast
attributes = attributes.replace('null','None')
new_attributes = ast.literal_eval(attributes)