Соответствие букв на любом языке

Как я могу сопоставить букву с любого языка, используя регулярное выражение в python 3?

re.match([a-zA-Z]) будет соответствовать символам английского языка, но я хочу, чтобы все языки поддерживались одновременно.

Я не хочу сопоставлять ' in can't или «подчеркивание» или любой другой тип форматирования. Я хочу, чтобы мое регулярное выражение соответствовало: c , a , n , t , Å , é и .

  • Изменение кодировки Windows cmd вызывает сбой Python
  • удаление emojis из строки в Python
  • (unicode error) 'unicodeescape' кодек не может декодировать байты в позиции 2-3: усеченный \ UXXXXXXXX escape
  • Selenium webdriver и unicode
  • Работа с ключами unicode в словаре python
  • Исходные строки Python и unicode: как использовать веб-вход в качестве шаблонов регулярных выражений?
  • Python 3 UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x9d
  • Python UnicodeDecodeError на Mac, но не на ПК?
  • 6 Solutions collect form web for “Соответствие букв на любом языке”

    Для работы регулярного выражения Unicode в Python я настоятельно рекомендую следующее:

    1. Используйте библиотеку regex Мэтью Барнетта вместо стандартного re , что не подходит для регулярных выражений Unicode.
    2. Используйте только Python 3, никогда Python 2. Вы хотите, чтобы все ваши строки были строками Unicode.
    3. Используйте только строковые литералы с логическими / абстрактными кодами Unicode, а не закодированными байтовыми строками.
    4. Установите свою кодировку в своих потоках и забудьте об этом. Если вы обнаружите, что когда-либо вручную .encode и т. Д., Вы почти наверняка делаете что-то неправильно.
    5. Используйте только широкую сборку, где кодовые точки и кодовые единицы одинаковы, никогда не были узкими, что может показаться неприемлемым для устойчивости Unicode.
    6. Нормализовать все входящие строки в NFD на пути, а затем NFC на выходе. В противном случае вы не сможете получить надежное поведение.

    Как только вы сделаете это, вы можете безопасно писать шаблоны, которые включают в себя \w или \p{script=Latin} или \p{alpha} и \p{lower} т. Д. И знаете, что все они будут делать то, что говорит Unicode Standard . В этом ответе я расскажу о всех этих делах бизнеса Python Unicode regex гораздо подробнее. Короткий рассказ – всегда использовать regex not re .

    Для общего совета Unicode у меня также есть несколько разговоров с последним OSCON о регулярных выражениях Unicode, большинство из которых, кроме 3-го разговора, касаются не только Python, но и многие из них адаптируются.

    Наконец, всегда есть этот ответ, чтобы поставить в сердце страх Бога (или, по крайней мере, Юникод).

    Что не так с использованием специальной последовательности \ w?

     # -*- coding: utf-8 -*- import re test = u"can't, Å, é, and 中ABC" print re.findall('\w+', test, re.UNICODE) 

    Вы можете

     \p{L} 

    который соответствует любой кодовой точке Unicode, которая представляет собой букву скрипта. То есть, предполагая, что у вас действительно есть механизм регулярных выражений, совместимый с Unicode, который я действительно надеюсь на Python.

    Создайте класс соответствия всех символов, которые вы хотите сопоставить. Это может стать очень , очень большим. Нет, нет указаний RegEx для «Все кандзи»;)

    Может быть, легче сопоставить то, чего вы не хотите, но даже тогда этот класс станет чрезвычайно большим.

     импортировать повторно
    
     text = "не может, Å, é и 中 ABC"
     print (re.findall ('\ w +', текст))
    

    Это работает в Python 3. Но это также соответствует символам подчеркивания. Однако это похоже на то, что я хочу:

     import regex
    
     text = "не может, Å, é и 中 ABC _ sh_t"
     print (regex.findall ('\ p {alpha} +', текст))
    

    Для португальского языка используйте этот вариант:

     [a-zA-ZÀ-ú ]+ 
    Python - лучший язык программирования в мире.