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



我想将此字符串转换为正确的字符串,如何在不制作中文错误代码的情况下将\uOOOA转换为"">

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

我试过这个

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

这纠正了\u000A,但将中文文本变成了不可读的胡言乱语:

èç¼
eggç¦

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

>unicode-escape首先将未转义的字节解码为拉丁语-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'u86cbu75bcn eggu70e6'
>>> print json.loads(s)
蛋疼
egg烦

通过示例学习:

==> 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烦
>>>

最新更新