2024-10-01 13:24:43 发布
网友
我有一个ASCII编码的JSON文件,带有unicode转义符(例如,\\u201cquotes\\u201d)和在字符串中转义的换行符(例如,`"foo\\r\\nbar")。Python中有没有一种简单的方法来生成utf-8编码的文件,方法是取消对unicode转义符的转义,但保留换行转义符的完整性?在
\\u201cquotes\\u201d
`"foo\\r\\nbar"
对字符串调用decode('unicode-escape')将解码unicode转义符(这是我想要的),但它也将解码回车和换行符(我不想要)。在
decode('unicode-escape')
当然有,使用适合作业的工具并要求^{} module将数据解码为Python unicode;然后将结果编码为UTF-8:
unicode
import json json.loads(input).encode('utf8')
仅对实际的Python字符串文本使用unicode-escape。JSON字符串与Python字符串不同,尽管乍一看,它们看起来非常相似。在
unicode-escape
简短的演示(考虑到python交互式解释器将字符串作为文本进行回显):
注意,JSON解码器对\r进行解码,就像python文本一样。在
\r
如果您绝对要只处理JSON输入中的\uabcdunicode文本,而保留其余内容,则需要使用正则表达式:
\uabcd
import re codepoint = re.compile(r'(\\u[0-9a-fA-F]{4})') def replace(match): return unichr(int(match.group(1)[2:], 16)) codepoint.sub(replace, text).encode('utf8')
它给出了:
>>> codepoint.sub(replace, r'\u201cquotes\u201d').encode('utf8') '\xe2\x80\x9cquotes\xe2\x80\x9d' >>> codepoint.sub(replace, r'"foo\r\nbar"').encode('utf8') '"foo\\r\\nbar"'
当然有,使用适合作业的工具并要求^{} module 将数据解码为Python
unicode
;然后将结果编码为UTF-8:仅对实际的Python字符串文本使用
unicode-escape
。JSON字符串与Python字符串不同,尽管乍一看,它们看起来非常相似。在简短的演示(考虑到python交互式解释器将字符串作为文本进行回显):
^{pr2}$注意,JSON解码器对
\r
进行解码,就像python文本一样。在如果您绝对要只处理JSON输入中的
\uabcd
unicode文本,而保留其余内容,则需要使用正则表达式:它给出了:
相关问题 更多 >
编程相关推荐