2015-06-22 2 views
6

Ho un problema con l'iterazione di stringhe Unicode, carattere per carattere, con python.Iterazione attraverso una stringa unicode in Python

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

Questa è la mia uscita

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

mio output desiderato è:

文 
本 

Quando uso len (parola) ottengo 6. A quanto pare ogni carattere è 3 pezzi unicode.

Quindi, la mia stringa unicode è memorizzata correttamente nella variabile, ma non riesco a estrarre i caratteri. Ho provato ad usare encode ('utf-8'), decodificare ('utf-8) e codec ma non riesco ancora ad ottenere buoni risultati. Questo sembra un problema semplice ma è frustrantemente difficile per me.

Spero che qualcuno possa indicarmi la giusta direzione.

Grazie!

risposta

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

uscita:

文本 
文 
本 
+0

Grazie per il tuo commento! Comunque sto ancora ricevendo un errore "il codec 'ascii' non può codificare il carattere u '\ u5f02' in posizione 0: ordinale non nel range (128)". Potrebbe essere che il mio file non venga letto come unicode al primo posto? Sto usando questa riga di codice per leggere il file: fileContent = codecs.open ('fileName.txt,' UTF-8 '). Read() – charpi

+1

@charpi quale errore? –

+0

modificato :) Grazie – charpi

1

Il codice che ho usato, che funziona è questo

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

puoi anche direttamente stampare (c) ', non c'è bisogno di codificare di nuovo poiché il contenuto del file che hai commentato era già in Unicode –

1

si dovrebbe convertire la parola da stringa tipo di unicode:

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