python unicode包含'\ u000A'转换make中文错误

时间:2017-08-04 07:08:02

标签: python unicode encode

我想将此字符串转换为正确的字符串,如何在不使用中文错误代码的情况下将\\uOOOA转换为'\ n'

# string
s = u'蛋疼\\u000A egg烦'

我试过这个

s.encode('utf-8').decode('unicode-escape')

这会纠正\\u000A,但会将中文文本变成难以理解的胡言乱语:

èç¼
 eggç¦

我从HTML页面的Javascript代码中获取了字符串。

2 个答案:

答案 0 :(得分:1)

unicode-escape首先将未转义的字节解码为 Latin-1 。这也是用于Javascript数据的错误方法; Python和Javascript语法略有不同,并且存在可能导致错误结果的边缘情况。

相反,将数据视为 JSON 。如果保留引号:

,则Javascript字符串始终可视为JSON字符串类型
s = u'"蛋疼\\u000A egg烦"'

请注意,该字符串现在以""开头和结尾。 HTML页面中的原始Javascript字符串定义也可以。

从HTML网页中提取数据时,保留双引号,然后将其传递给json.loads()

>>> import json
>>> s = u'"蛋疼\\u000A egg烦"'
>>> json.loads(s)
u'\u86cb\u75bc\n egg\u70e6'
>>> print json.loads(s)
蛋疼
 egg烦

答案 1 :(得分:-2)

通过示例学习:

==> python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> # original
...
>>> s= u'蛋疼\\u000A egg烦'
>>> s
'蛋疼\\u000A egg烦'
>>> print(s)
蛋疼\u000A egg烦
>>>
>>>
>>> # answer
...
>>> s= u'蛋疼\u000A egg烦'
>>> s
'蛋疼\n egg烦'
>>> print(s)
蛋疼
 egg烦
>>>