将unicode转义序列转换为中文字符串

时间:2014-11-20 15:10:25

标签: python unicode

在python中我有一个unicode转义序列,它最初是chinease文本的一部分。我正在尝试正确显示它(转换为Unicode字符串)。 搜索SO我尝试了几种方法,但没有一种方法可行 这就是我得到的:

import re
import codecs
import urllib

ESCAPE_SEQUENCE_RE = re.compile(r'''
    ( \\U........      # 8-digit hex escapes
    | \\u....          # 4-digit hex escapes
    | \\x..            # 2-digit hex escapes
    | \\[0-7]{1,3}     # Octal escapes
    | \\N\{[^}]+\}     # Unicode characters by name
    | \\[\\'"abfnrtv]  # Single-character escapes
    )''', re.UNICODE | re.VERBOSE)

def decode_escapes(s):
    def decode_match(match):
        return codecs.decode(match.group(0), 'unicode-escape')

    return ESCAPE_SEQUENCE_RE.sub(decode_match, s)


print(decode_escapes('\u6240\u8BF7\u6C42\u7684\u8FD4\u7A0B\u65E5'))

尝试执行此代码将失败,并显示以下错误:

Traceback (most recent call last):
  File "Test.py", line 21, in <module>
    print(decode_escapes('\u6240\u8BF7\u6C42\u7684\u8FD4\u7A0B\u65E5'))
  File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-6: character maps to <undefined>

最后它应该是这样的:

所请求的返程日

你能建议我能做些什么来看正确的字符串吗?

0 个答案:

没有答案