2016-10-26 14 views
5

Tôi đang cố gắng để có được bảng chữ cái từ mô-đun chuỗi python tùy thuộc vào một miền địa phương đã cho không thành công (đó là với dấu phụ, tức là éèêà ... cho tiếng Pháp). Dưới đây là một ví dụ nhỏ:Chuỗi ký tự Python không bao gồm dấu phụ địa phương

import locale, string 

locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
print string.letters 
# shows ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') 
print string.letters 
# also shows ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Trong tài liệu python, người ta nói rằng string.letters is locale dependent, nhưng có vẻ như nó không làm việc cho tôi.

Điều tôi đang làm sai và đó có phải là cách phù hợp để có bảng chữ cái phụ thuộc vào ngôn ngữ không?

Chỉnh sửa: Tôi vừa kiểm tra miền địa phương print locale.getlocale() sau khi cài đặt và thay đổi chính xác.

+0

có lẽ nó không hoạt động với 'UTF-8' nhưng chỉ với' cp125x' - xem http://stackoverflow.com/questions/9907191/setting-locale -and-string-module-in-python – furas

+0

Có lẽ vì miền địa phương của bạn không được cập nhật kiểm tra 'locale.getlocale (locale.LC_ALL)' sau 'setlocale' –

+0

Nếu bạn rời khỏi phần' .UTF-8', bạn nhận được nhiều chữ cái hơn, nhưng tôi không thể tìm thấy mã hóa nào ... –

Trả lời

3

Trong python 2.7 (không có chuỗi ký tự nào trong python 3.x) nó hoạt động nếu bạn đặt ngôn ngữ thành 'fr_FR' (tương đương với 'fr_FR.ISO8859-1', không phải 'fr_FR.UTF-8').

>>> import locale, string 
>>> locale.setlocale(locale.LC_ALL, 'es_ES') 
'es_ES' 
>>> string.letters 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\xaa\xb5\xba\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff' 
>>> locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') 
'es_ES.UTF-8' 
>>> string.letters 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 

Vì vậy, \ xaa là ký tự "ª", \ xab "« ", \ xd1 là" Ñ "v.v. Nhưng biểu diễn mã hóa thực sự bị hỏng.

tôi khuyên bạn nên đọc bài viết này: https://pythonhosted.org/kitchen/unicode-frustrations.html

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