我在解析一个文本时,有时会得到以下结果
{"name":"John","last" : Doe", "Food":"Fries","Coffee" : "Need}
我在这里处理的是别人的数据,所以我只需要处理它。
有没有可能使用正则表达式(或其他表达式),这样我就可以通读文件,每当我发现不匹配的引号时,就通过匹配它们来修改文件。
所以我最终会得到
{"name":"John","last" : "Doe", "Food":"Fries","Coffee" : "Need"}
发布于 2018-06-15 05:57:08
如果缺少引号是文本的唯一问题和字段中没有转义引号,那么您可以通过查找四种类型的不规则来修复文本。
s = '{name":"John","last" : Doe", "Food:"Fries","Coffee" : "Need}'
分号后缺少引号:
s = re.sub('"\s*:\s*(?=[^\s"])', '":"', s)
在分号前缺少引号:
s = re.sub('(?<=[^\s"])\s*:\s*"', '":"', s)
右大括号前缺少引号:
s = re.sub('(?<=[^\s"])\s*\}', '"}', s)
左大括号后缺少引号:
s = re.sub('\{\s*(?=[^\s"])', '{"', s)
一个接一个地应用所有四种转换,希望问题已经解决:
print(s)
#{"name":"John","last":"Doe", "Food":"Fries","Coffee" : "Need"}
https://stackoverflow.com/questions/50865953
复制相似问题