[英]Difficulty understanding JSON escape characters
我对编程很陌生,最近深入研究了JSON 转义和 Python 中的特殊字符的主题。 我了解如何转义双引号。 例如:
进口 json
data = json.loads('{"Test": "In \\"quotation\\" marks"}')
打印(数据)
返回(作为“字典”): {'测试':'在“引号”标记中'}
但我无法理解其他特殊字符的使用方式,例如: \b、\n、\、\f 等...
有人可以告诉我一些代码示例,这些其他特殊转义字符将在何处以及如何使用,例如,上面的 json.loads 函数。 我将不胜感激。 谢谢
JSON 字符串必须用双引号; 因此,您需要转义双引号才能将其包含在 JSON 字符串中。
但是,您还需要转义 Python 字符串文字中的反斜杠,以便在 JSON 值中获得文字反斜杠。 您可以按照问题中的说明进行操作:
'{"Test": "In \\"quotation\\" marks"}'
或者使用原始字符串文字
r'{"Test": "In \"quotation\" marks"}'
造成混淆的部分原因是 JSON 字符串值和 Python 字符串文字看起来完全相同。 例如,由换行符组成的 JSON 字符串看起来像
"\n"
和一个 Python 字符串文字定义一个由换行符组成的字符串也看起来像
"\n"
定义包含由换行符组成的 JSON 字符串的字符串的 Python 字符串文字将是
'"\\n"'
或者
r'"\n"'
没关系。 我想到了。 我的问题是当我在做的时候
data = json.loads('{"Test": "引号\\n中"}')
打印(数据)
它会返回: {'Test': 'In quotation \n marks '}我试图理解为什么它显示 \n 而不是实际的新行
我意识到转义只会在您寻找给定键的值时出现。 例如,
打印(数据[“测试”])返回
报价中
分数
同样的事情data = json.loads('{"Test": "In "quotation" \\bmarks"}')
返回 =在引号中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.