Как узнать, какие символы определены как буквенно-цифровые для данной локали - PullRequest
6 голосов
/ 11 марта 2012

Таким образом, при сопоставлении с регулярным выражением Python у нас есть значение \ w и других, на которые влияет флаг re.LOCALE:

\ w

Когда флаги LOCALE и UNICODEне указан, соответствует любому буквенно-цифровому символу и подчеркиванию;это эквивалентно набору [a-zA-Z0-9_].С LOCALE он будет соответствовать набору [0-9_] плюс любые символы, определенные как буквенно-цифровые для текущей локали.

Поэтому мы хотим выяснить, какие символы определены как буквенно-цифровые для данной локали- скажем, мы сделали 'locale -a' и у нас есть список локалей, и мы хотим найти информацию для одной из перечисленных локалей в системе.Любой способ быстрого поиска информации: фрагмент кода Python или однострочный текст, команда оболочки или, возможно, справочный материал где-то.

1 Ответ

5 голосов
/ 11 марта 2012

Использовать string.letters.

Пример:

>>> import locale
>>> import string
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
>>> 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'
>>> 
...