我正在使用: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
答案 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']