Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用ASCII字符(\u9078)拆分行_Python_Python 3.x - Fatal编程技术网

如何在python中使用ASCII字符(\u9078)拆分行

如何在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

将属性转换为JSON时,它在ASCII字符中添加了额外的反斜杠,如何避免这种情况,请参阅下面的代码

输入文件(sample.properties)

代码

输出:(sample.json)

预期结果:

{"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: