在Python中对一个unicode字符串进行迭代
问题描述:
我遇到了一个用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)和编解码器,但仍然无法获得任何好的结果。这看起来像一个简单的问题,但对我来说令人沮丧。
希望有人能指点我正确的方向。
谢谢!
答
# -*- coding: utf-8 -*-
word = "文本"
print(word)
for each in unicode(word,"utf-8"):
print(each)
输出:
文本
文
本
答
我使用的代码,其工作原理是
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中,所以不需要重新编码 –
答
你应该字从字符串类型的unicode转换:
print "w: ",word
for c in word.decode('utf-8'):
print "word: ",c
感谢您的评论!但是,我仍然收到错误“'ascii'编解码器无法在位置0编码字符u'\ u5f02':序号不在范围(128)”中。难道说我的文件不是以unicode的形式读取的?我使用这行代码来读取文件:fileContent = codecs.open('fileName.txt,'UTF-8')。read() – charpi
@charpi什么错误? –
edited :) Thanks – charpi