Regex для соответствия всем кавычкам Unicode

Есть ли простое регулярное выражение для соответствия всем кавычкам Юникода? Или нужно вручную закодировать это так:

quotes = ur"[\"'\u2018\u2019\u201c\u201d]"

Спасибо за чтение.

Брайан


person Brian M. Hunt    schedule 27.06.2010    source источник


Ответы (2)


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

Вы также можете рассмотреть «ложные кавычки», которые, к сожалению, используются — острый и серьезный акцент (´ и `` ):`and´`.

Затем идут кайры (« » ‹ ›), их тоже хотите? Используйте \u00BB\u203A\u00AB\u2039 для тех.

Кроме того, в вашей команде есть небольшая ошибка: вы добавляете обратную косую черту к строке quotes (поскольку вы используете необработанную строку). Вместо этого используйте строку в тройных кавычках.

>>> quotes = ur"[\"'\u2018\u2019\u201c\u201d\u0060\u00b4]"
>>> "\\" in quotes
True
>>> quotes
u'[\\"\'\u2018\u2019\u201c\u201d`\xb4]'
>>> quotes = ur"""["'\u2018\u2019\u201c\u201d\u0060\u00b4]"""
>>> "\\" in quotes
False
>>> quotes
u'["\'\u2018\u2019\u201c\u201d`\xb4]'
person Tim Pietzcker    schedule 27.06.2010
comment
Еще нет; идет переписывание модуля re, но я понятия не имею, когда и будет ли он объединен с основной веткой разработки. Я сомневаюсь, что он появится до Python 3.3. - person Tim Pietzcker; 28.06.2010
comment
Даже если они еще не доступны в модуле re, вы все равно можете импортировать модуль unicodedata и выполнить quotes = ''.join(c for c in (chr(i) for i in range(0x110000)) if unicodedata.category(c) in ('Pf', 'Pi')). - person dan04; 19.07.2016

Кавычки часто имеют категорию Unicode Pi (знак пунктуации, начальная кавычка) или Pf (пунктуация, конечная кавычка). Вам придется обрабатывать «нейтральные» кавычки ' и " вручную.

person dan04    schedule 27.06.2010
comment
+1: Чувак, я проглядел это. Я исправил свой ответ. К сожалению, Python не поддерживает свойства Unicode (пока). Он не указал Python, но я догадываюсь об этом из его примера кода и его предыдущего вопроса. - person Tim Pietzcker; 28.06.2010