Python中如何为JSON属性添加双引号使其符合JSON解析规范?
原有代码问题
- 正则语法错误:你使用了JavaScript风格的正则字面量格式,Python
re模块不需要正则前后的/包裹,也不需要末尾的g全局匹配标识,re.sub默认执行全局替换。 - 替换逻辑错误:原有替换值为空字符串,会直接删除匹配到的属性名,和需求完全相反。
- 匹配规则不完善:没有考虑属性名和冒号之间可能存在空格,容易出现匹配遗漏。
正确实现代码
import re import json var = ''' { pzn: "09900426", url: "/url.html", packageSizeValue: "28", packageSizeUnit: "St", sizeValue: "", potency: "" }, { pzn: "09900432", url: "/url2.html", packageSizeValue: "84", packageSizeUnit: "St", sizeValue: "", potency: "" } ''' # 匹配所有后接冒号的属性名,包裹双引号 formatted_str = re.sub(r'(\w+)(?=\s*:)', r'"\1"', var) # 如果需要解析为Python对象,补全数组括号即可 data = json.loads(f'[{formatted_str}]')
运行后formatted_str输出符合预期的合法JSON格式:
{ "pzn": "09900426", "url": "/url.html", "packageSizeValue": "28", "packageSizeUnit": "St", "sizeValue": "", "potency": "" }, { "pzn": "09900432", "url": "/url2.html", "packageSizeValue": "84", "packageSizeUnit": "St", "sizeValue": "", "potency": "" }
内容的提问来源于stack exchange,提问作者merlin
相关产品推荐
相关产品推荐

