[英]json parsing with escape characters clarification
我知道在处理特殊转义字符时 json 解析有很多类似的问题,但是我找不到解决方案。 我要做的是将以下内容保存到 json 文件中,稍后我可以使用 python 中的 json 模块将其作为字典检索。 我的 json 是这样的
{"head":{"body":{"/^\s+|\s+$":"", "\s+":" "}}}
当我试图将它放入 json 并加载它时,它会给我一个解析错误,正如预期的那样,因为没有转义反斜杠。 所以我将其更正如下(基于SO的建议):
{"head":{"body":{"/^\\s+|\\s+$":"", "\\s+":" "}}}
但是,当我将它加载到字典时,虽然它会解析,但它给我的字典如下:
{"head":{"body":{"/^\\s+|\\s+$":"", "\\s+":" "}}}
而不是预期的一个反斜杠。 如何处理它,使我的 \s 只有一个反斜杠而不是两个。 我也想过用 ast.literal_eval() 来读取数据,但不想 go 那样。 关于如何 go 关于此的任何建议。
您有一个包含一些正则表达式的数据结构。 在 Python 语法中,这将是:
data = {
'head': {
'body': {
r'^\s+|\s+$': '',
r'\s+': ' '
}
}
}
当您将此数据转换为 JSON 并将其存储在文件中时:
import json
with open('test.json', 'w', encoding='utf8') as fp:
json.dump(data, fp)
并在文本编辑器中打开生成的文件,您将看到:
{"head": {"body": {"^\\s+|\\s+$": "", "\\s+": " "}}}
当您再次 JSON 解析此文件时:
with open('test.json', encoding='utf8') as fp:
data = json.read(fp)
print(data)
Python 将打印:
{'head': {'body': {'^\\s+|\\s+$': '', '\\s+': ' '}}}
...这与我们最初拥有的完全相同,除了最初我们使用原始字符串文字r'...'
,但 Python 的print()
永远不会 output 这种特殊格式。
您最初在 JSON 文件中想要的东西:
{"head":{"body":{"/^\s+|\s+$":"", "\s+":" "}}}
不是 JSON 并且没有任何理由尝试实现这种格式。
结论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.