【发布时间】:2018-07-12 14:53:25
【问题描述】:
我有一个脚本可以处理从 Web API 返回的数据。返回的数据是字典列表的字符串表示形式。
我知道 ast.literal_eval() 可以将字典的字符串表示形式转换为真实的表示形式。
数据看起来像这样(提醒:那些是字符串,而不是字典):
new = [{"id": "L0", "tags": null, "disable": false},
{"id": "L1", "tags": null, "disable": false},
{"id": "L2", "tags": null, "disable": false}]
因为 'null' 和 'false' 没有用引号括起来,所以 ast.literal_eval() 失败并出现错误。如果我在上面手动为 null 和 false 添加引号,则效果很好。
我试图遍历字符串并将子字符串 null 和 false 修改为“null”和“false”,但它什么也没做:
for i in new:
i.replace("null", "\"null\"")
i.replace("false", "\"false\"")
如何修改这些子字符串以添加封闭引号?如果可能的话,我宁愿修改现有列表 (new[]) 而不是创建一个新列表,但如果我必须创建一个新列表才能使其正常工作,那么我将这样做。
【问题讨论】:
-
我假设你的意思是
None和False? -
@MarkS,如果 new 是一个字符串,那么你的方法有点正确。不要使用 for 循环。只需 2 行就足够了。也不要忘记在替换操作后重新分配返回的值。请注意,字符串在 Python 中是不可变的。例如,
i = i.replace("null", "\"null\"")
标签: python-3.x python-3.6 str-replace