2015-06-22 105 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 
相關問題