2015-06-22 7 views
6

Mam problem z iterowaniem ciągów znaków Unicode, znak po znaku, z pythonem.Iterowanie przez ciąg znaków Unicode w języku Python

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

To moje wyjście

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

My pożądane wyjście jest:

文 
本 

Kiedy używać len (WORD) otrzymuję 6. Podobno każdy znak jest 3 kawałki Unicode.

Tak więc mój ciąg znaków Unicode został pomyślnie zapisany w zmiennej, ale nie mogę uzyskać znaków. Próbowałem użyć kodowania ("utf-8"), dekodowania ("utf-8) i kodeków, ale nadal nie można uzyskać żadnych dobrych wyników. Wydaje się to prostym problemem, ale dla mnie jest to dla mnie frustrujące.

Mam nadzieję, że ktoś może wskazać mi właściwy kierunek.

Dzięki!

Odpowiedz

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

wyjściowa:

文本 
文 
本 
+0

Dzięki za komentarz! Jednak wciąż dostaję błąd "" ascii "kodek nie może kodować znaku u '\ u5f02' w pozycji 0: porządkowy nie w zakresie (128)". Czy to możliwe, że mój plik nie jest najpierw czytany jako Unicode? Używam tego wiersza kodu do odczytu pliku: fileContent = codecs.open ('fileName.txt,' UTF-8 '). Read() – charpi

+1

@charpi jaki błąd? –

+0

edytowane :) Dzięki – charpi

1

Kod użyłem który działa jest to

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

możesz także bezpośrednio 'print (c) ', nie trzeba ponownie kodować, ponieważ skasowana zawartość pliku jest już w Unicode –

1

należy przekonwertować słowo z ciąg typem unicode:

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