我有一个文件,其中每一行都有这样的文本(代表电影演员表):
[{'cast_id': 23, 'character': "Roger 'Verbal' Kint", 'credit_id': '52fe4260c3a36847f8019af7', 'gender': 2, 'id': 1979, 'name': 'Kevin Spacey', 'order': 5, 'profile_path': '/x7wF050iuCASefLLG75s2uDPFUu.jpg'}, {'cast_id': 27, 'character': 'Edie's Finneran', 'credit_id': '52fe4260c3a36847f8019b07', 'gender': 1, 'id': 2179, 'name': 'Suzy Amis', 'order': 6, 'profile_path': '/b1pjkncyLuBtMUmqD1MztD2SG80.jpg'}]
我需要将其转换为有效的 json 字符串,因此仅将必要的单引号转换为双引号(例如,不得转换单词 Verbal 周围的单引号,文本中最终的撇号也不应转换)。
我正在使用 python 3.x。我需要找到一个正则表达式,它只会将正确的单引号转换为双引号,从而将整个文本生成一个有效的 json 字符串。任何的想法?
原文由 revy 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,您给出的示例行不可解析!
… 'Edie's Finneran' …
包含语法错误,无论如何。假设您可以控制输入,您可以简单地使用
eval()
来读入文件。 (虽然,在那种情况下,人们会想知道为什么您不能首先生成有效的 JSON……)如果您无法控制输入,这是非常危险的,因为它会使您容易受到代码注入攻击。
我怎么强调都不为过,最好的解决方案是首先生成有效的 JSON。