【发布时间】:2018-05-19 11:28:16
【问题描述】:
我有一个文件,其中每一行都有这样的文字(代表电影的演员表):
[{'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 字符串。任何想法?
【问题讨论】:
-
文件是由什么产生的?正确的做法是将其解析为字典列表,然后使用
json.dump对其进行编码。正则表达式就出来了;这不是常规语言。 -
import json;json.dumps(your_dict) -
@AmitTripathi 这还不是
dict;它是文件中的一个字符串。 -
您的输入存在严重问题:值
Edie's Finneran用单引号括起来;没有解析器能够分辨出撇号不是结束引号。您将不得不修复生成该文件的任何内容,在这种情况下,您不妨首先让它输出 JSON。 -
你还没有回答这个问题:这个字符串是从哪里来的?为什么它还不是 json 兼容的?有多少?
标签: python json regex double-quotes single-quotes