我有来自不同语言的不同文本的语料库。
我想捕捉所有的角色。我使用python2.7和defaultencodingsetting是utf-8
我不知道为什么当我把这个代码用于德语元音变音符时,它会正确地输出德语元音变音符:
'Erd\xC3\xA4pfel'.decode('unicode-escape').encode('latin1').decode('utf-8')
结果是: Erdäpfel
但是当我使用这个代码时:
^{pr2}$结果是: Erd÷pfel这是不同的。在
我不熟悉文本挖掘,我知道例如拉丁1编码不包含法语字母,这在我的项目中是不需要的。 我怎样才能把我的语料库中的所有字符串都转换成unicode语言?在
Utf-8根据文档,它包含所有语言,但为什么它不能正确打印德语元音变音,而拉丁1编码却能正确打印?在
PS:unicode转义字符序列中的小写不是大小写。我试过两种方法,结果都一样。
你已经有了UTF-8编码的数据。在bytestring中没有要转义的字符串字符。您看到的是一个字符串的
repr()
输出,其中不可打印的ASCII字符显示为转义序列,因为这使得值可以以ASCII安全的方式轻松地复制和传递。您看到的\xc3
是一个字节,而不是单独的字符:必须使用原始字符串文本或双反斜杠才能实际获得
^{pr2}$unicode-escape
可以处理的转义序列:请注意,该字符串中有一个单独的
\
反斜杠字符(回显为\\
,再次转义为)。在在解释实际的转义序列之后,他
unicode-escape
将数据解码为拉丁语1,因此最终得到一个Unicode字符串,其中包含字符U+00C3 LATIN CAPITAL LETTER A WITH TILDE。将其编码回拉丁语1字节会再次给您\xC3
字节,而您又回到了UTF-8字节。然后解码为UTF-8可以正常工作。在但是第二次尝试将U+00C3拉丁文大写字母A与颚化符代码点编码为UTF-8,这种编码为字节序列
\xc3\x83
。将这些字节打印到UTF-8终端将显示Ã
字符。另一个字节\xA4
变成了U+00A4 CURRENCY SIGN,其中的UTF-8字节序列是\xc2\xa4
,打印为¤
。在这里完全不需要解码为
^{3}$unicode-escape
。只需将数据保持原样即可。或者,也许,解码为UTF-8以获得unicode
对象:如果您的实际数据(而不是您所做的测试)包含编码UTTF-8的
\xhh
转义序列,那么不要使用unicode-escape
来解码这些序列。使用string-escape
得到一个包含UTF-8数据的字节字符串(然后根据需要将其解码为Unicode):相关问题 更多 >
编程相关推荐