2015-06-22 13 views
6

Ich habe ein Problem mit Iterieren durch Unicode-Zeichenfolgen, Zeichen für Zeichen, mit Python.Iterieren durch eine Unicode-Zeichenfolge in Python

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

Das ist mein Ausgang

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

Meine gewünschte Ausgabe ist:

文 
本 

Wenn ich len verwenden (Wort) Ich erhalte 6. Offenbar jedes Zeichen 3 Unicode-Chunks.

Also, meine Unicode-Zeichenfolge ist erfolgreich in der Variablen gespeichert, aber ich kann die Zeichen nicht erhalten. Ich habe versucht, encode ('utf-8'), decode ('utf-8) und Codecs zu verwenden, kann aber immer noch keine guten Ergebnisse erzielen. Das scheint ein einfaches Problem zu sein, ist aber frustrierend schwer für mich.

Hoffe jemand kann mich in die richtige Richtung zeigen.

Danke!

Antwort

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

Ausgang:

文本 
文 
本 
+0

Danke für Ihren Kommentar! Allerdings bekomme ich immer noch einen Fehler '' ascii 'Codec kann nicht codieren Zeichen u' \ u5f02 'in Position 0: Ordnungszahl nicht im Bereich (128) ". Kann es sein, dass meine Datei nicht als Unicode an erster Stelle gelesen wird? Ich verwende diese Codezeile, um die Datei zu lesen: fileContent = codecs.open ('fileName.txt,' UTF-8 '). Read() – charpi

+1

@charpi welcher Fehler? –

+0

bearbeitet :) Danke – charpi

1

Der Code I arbeitet verwendet, ist dies

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

dekodieren Sie können auch direkt' print (c) ', muss nicht erneut codiert werden, da die von Ihnen kommentierten Dateiinhalte bereits in Unicode waren –

1

Sie das Wort von String Typ Unicode umwandeln sollte:

print "w: ",word 
for c in word.decode('utf-8'): 
    print "word: ",c 
Verwandte Themen