2012-03-30 43 views
18

Khi tôi sử dụng .lower() bằng Python 2.7, chuỗi không được chuyển thành chữ thường cho các chữ cái ŠČŽ. Tôi đã đọc dữ liệu từ điển.python 2.7 chữ thường

Tôi đã thử sử dụng str(tt["code"]).lower(), tt["code"].lower().

Mọi đề xuất?

+1

Hãy xem http://stackoverflow.com/questions/727507/how-can-i-do-unicode-uppercase, tôi nghĩ nó có thể liên quan. – mgilson

Trả lời

22

chuỗi Sử dụng unicode:

[email protected]:~$ python 
Python 2.7.2+ (default, Oct 4 2011, 20:06:09) 
[GCC 4.6.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print "ŠČŽ" 
ŠČŽ 
>>> print "ŠČŽ".lower() 
ŠČŽ 
>>> print u"ŠČŽ".lower() 
ščž 

Thấy rằng ít u? Điều đó có nghĩa là nó được tạo dưới dạng đối tượng unicode thay vì đối tượng str.

+2

Nhưng làm thế nào để anh ta nhận được unicode nếu nó không phải là một chữ? – agf

+0

Tôi đang đọc từ dict vậy làm thế nào để chuyển đổi tt ["code"] thành u "ŠČŽ"? – Yebach

+0

Sử dụng ** unicode (tt ["code"], 'latin2') **, trong đó 'latin2' được mã hóa được sử dụng, vì vậy bạn có thể cần sử dụng mã khác. – Tupteq

4

Sử dụng unicode:

>>> print u'ŠČŽ'.lower().encode('utf8') 
ščž 
>>> 

Bạn cần phải chuyển đổi văn bản của bạn thành Unicode ngay sau khi nó đi vào chương trình của bạn từ thế giới bên ngoài, chứ không phải chỉ đơn thuần là tại điểm mà tại đó bạn nhận thấy một vấn đề.

Theo đó, hãy sử dụng mô-đun codecs để đọc trong văn bản đã giải mã hoặc sử dụng 'bytestring'.decode('latin2') (nơi thay cho latin2 bạn nên sử dụng bất kỳ mã hóa thực tế nào).

+0

Tôi đang đọc từ dict vậy làm thế nào để chuyển đổi tt ["code"] thành u "ŠČŽ"? Tôi không thể sử dụng ustr (tt ["code"]) .giảm() mã hóa ('utf8') hoặc str (tt [u "code"]). Lower(). Encode ('utf8') – Yebach

+0

@Yebach Xem cập nhật. – Marcin

Các vấn đề liên quan