2015-06-22 15 views
6

Tôi gặp sự cố khi lặp qua chuỗi unicode, ký tự theo ký tự, với python.Lặp lại thông qua chuỗi unicode trong Python

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

Đây là đầu ra của tôi

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

đầu ra của tôi mong muốn là:

文 
本 

Khi tôi sử dụng len (word) tôi nhận được 6. Rõ ràng mỗi nhân vật là 3 khối unicode.

Vì vậy, chuỗi unicode của tôi được lưu trữ thành công trong biến, nhưng tôi không thể lấy các ký tự ra ngoài. Tôi đã thử sử dụng mã hóa ('utf-8'), giải mã ('utf-8) và codec nhưng vẫn không thể nhận được bất kỳ kết quả tốt nào. Điều này có vẻ như là một vấn đề đơn giản nhưng khó chịu cho tôi.

Hy vọng ai đó có thể chỉ cho tôi đúng hướng.

Cảm ơn!

Trả lời

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

Output:

文本 
文 
本 
+0

Cảm ơn nhận xét của bạn! Tuy nhiên tôi vẫn nhận được một lỗi "'ascii' codec không thể mã hóa ký tự u '\ u5f02' ở vị trí 0: thứ tự không nằm trong phạm vi (128)". Nó có thể là tập tin của tôi không được đọc là unicode ở nơi đầu tiên? Tôi đang sử dụng dòng mã này để đọc tệp: fileContent = codecs.open ('fileName.txt,' UTF-8 '). Đọc() – charpi

+1

@charpi lỗi gì? –

+0

edited :) Cảm ơn – charpi

1

Code tôi sử dụng mà các công trình này là

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

bạn cũng có thể trực tiếp 'in (c) ', không cần mã hóa lại vì nội dung tệp bạn đã nhận xét đã có trong unicode –

1

bạn nên chuyển đổi từ từ chuỗi loại để unicode:

print "w: ",word 
for c in word.decode('utf-8'): 
    print "word: ",c 
Các vấn đề liên quan