2015-06-22 102 views
6

我遇到了一个用python逐个字符地遍历unicode字符串的问题。在Python中对一个unicode字符串进行迭代

print "w: ",word 
for c in word: 
    print "word: ",c 

这是我的输出

w: 文本 
word: ? 
word: ? 
word: ? 
word: ? 
word: ? 
word: ? 

我所需的输出是:

文 
本 

当我使用LEN(字)我得到6.显然,每一个字符是3个的Unicode块。

所以,我的unicode字符串已成功存储在变量中,但我无法获取字符。我试过使用编码('utf-8'),解码('utf-8)和编解码器,但仍然无法获得任何好的结果。这看起来像一个简单的问题,但对我来说令人沮丧。

希望有人能指点我正确的方向。

谢谢!

回答

12
# -*- coding: utf-8 -*- 
word = "文本" 
print(word) 
for each in unicode(word,"utf-8"): 
    print(each) 

输出:

文本 
文 
本 
+0

感谢您的评论!但是,我仍然收到错误“'ascii'编解码器无法在位置0编码字符u'\ u5f02':序号不在范围(128)”中。难道说我的文件不是以unicode的形式读取的?我使用这行代码来读取文件:fileContent = codecs.open('fileName.txt,'UTF-8')。read() – charpi

+1

@charpi什么错误? –

+0

edited :) Thanks – charpi

1

我使用的代码,其工作原理是

fileContent = codecs.open('fileName.txt','r',encoding='utf-8') 
#...split by whitespace to get words.. 
for c in word: 
     print(c.encode('utf-8')) 
+1

再次解码它,你也可以直接'print(c) ',因为你评论的文件内容已经在unicode中,所以不需要重新编码 –

1

你应该字符串类型的unicode转换:

print "w: ",word 
for c in word.decode('utf-8'): 
    print "word: ",c 
相关问题