如何在python中使用ASCII字符(\u9078)拆分行
将属性转换为JSON时,它在ASCII字符中添加了额外的反斜杠,如何避免这种情况,请参阅下面的代码 输入文件(sample.properties) 代码 输出:(sample.json) 预期结果:如何在python中使用ASCII字符(\u9078)拆分行,python,python-3.x,Python,Python 3.x,将属性转换为JSON时,它在ASCII字符中添加了额外的反斜杠,如何避免这种情况,请参阅下面的代码 输入文件(sample.properties) 代码 输出:(sample.json) 预期结果: {"key": {"CHOOSE": "\u9078\u629e"}} 问题似乎是您保存了表示为转义字符串的unicode字符。你应该在某个时候破译它们 改变 l = line.strip() 到(对于Python2.x) 到(对于Python 3.x) 提供所需的输出: {"key": {"C
{"key": {"CHOOSE": "\u9078\u629e"}}
问题似乎是您保存了表示为转义字符串的unicode字符。你应该在某个时候破译它们 改变
l = line.strip()
到(对于Python2.x)
到(对于Python 3.x)
提供所需的输出:
{"key": {"CHOOSE": "\u9078\u629e"}}
我不知道你们问题的解决办法,但我发现了问题发生的地方
with open('sample.properties', encoding='utf-8') as f:
for line in f:
print(line)
print(repr(line))
d = {}
d['line'] = line
print(d)
out:
property.key.CHOOSE=\u9078\u629e
'property.key.CHOOSE=\\u9078\\u629e'
{'line': 'property.key.CHOOSE=\\u9078\\u629e'}
我不知道添加到字典中如何增加字符串的重复。问题是输入按原样读取,而
\u
按字面意思复制为两个字符。最简单的修复方法可能是:
with open(fileName, "r", encoding='unicode-escape') as f:
这将解码转义的unicode字符。您确定这是一个额外的反斜杠吗?乍一看,我会猜到这两个反斜杠需要在
\u
中的u
之前呈现一个文字反斜杠。否则,\u
只会转义u
,这可能只会产生普通的u
。是的,它会。他提供了一个最低限度的测试用例。请看:这在python3中不起作用,因为op特别要求。python3:。encode('ascii')。decode('unicode-escape')
谢谢您的评论,我为后代编辑了相应的答案。这是!使用此解决方案。这也是我之前想要给出的答案,但它对我来说不起作用,因为我以前错误地使用python2而不是python3运行代码。我也在寻找答案。我问了类似的问题,请看:
l = line.strip().decode('unicode-escape')
l = line.strip().encode('ascii').decode('unicode-escape')
{"key": {"CHOOSE": "\u9078\u629e"}}
with open('sample.properties', encoding='utf-8') as f:
for line in f:
print(line)
print(repr(line))
d = {}
d['line'] = line
print(d)
out:
property.key.CHOOSE=\u9078\u629e
'property.key.CHOOSE=\\u9078\\u629e'
{'line': 'property.key.CHOOSE=\\u9078\\u629e'}
with open(fileName, "r", encoding='unicode-escape') as f: