python

时间:2018-05-02 16:08:15

标签: python encoding utf-8 split

我正在使用:Python 2.6.6

我有以下示例代码。 scnd_dic.txt,包含中文字符;我有拆分输出的问题。 有没有办法在分裂而不是unicode的结果中看到中文字符?

print(line):勀KE4

print(line.split()):[u'\ xe5 \ x8b \ x80','KE4']

你'\ xe5 \ x8b \ x80'vs勀;

import codecs
with codecs.open('scnd_dic.txt', 'r', encoding='utf-8') as f:  

          #d = dict(line.rstrip().split(None, 1) for line in f)

          for line in f:

                 print(line)

                 print(line.split() )

在scnd_dic.txt一边,有一些如下的行:

勀   KE4
垸   HUAN2
昇   SHENG1
洩   XIE4
犇   BEN1
缐   XIAN4

输出:

勀   KE4
[u'\xe5\x8b\x80', u'KE4']
垸   HUAN2
[u'\xe5\x9e\xb8', u'HUAN2']
昇   SHENG1
[u'\xe6\x98\x87', u'SHENG1']
洩   XIE4
[u'\xe6\xb4\xa9', u'XIE4']
犇   BEN1
[u'\xe7\x8a\x87', u'BEN1']
祕   MI4
[u'\xe7\xa5\x95', u'MI4']
缐   XIAN4

1 个答案:

答案 0 :(得分:0)

您的问题与unicode,编码或解码无关。您正在看到十六进制表示而不是实际字符,因为这是python 2在具有非ascii字符时将字符串作为列表中的项打印的方式。如果要显示实际字符,则需要绕过打印列表机制(读取:不打印列表)。

with codecs.open('scnd_dic.txt', 'r', encoding='utf-8') as f:  
    for line in f:
        print(line)
        print(u'[u\'{}\', u\'{}\']'.format(*line.split()))

输出:

勀   KE4

[u'勀', u'KE4']
垸   HUAN2

[u'垸', u'HUAN2']
昇   SHENG1

[u'昇', u'SHENG1']
洩   XIE4

[u'洩', u'XIE4']
犇   BEN1

[u'犇', u'BEN1']
缐   XIAN4

[u'缐', u'XIAN4']