Ви можете зробити це краще за допомогою цієї перевірки:
>>> import unicodedata
>>> unicodedata.category("'").startswith("P")
True
>>> unicodedata.category("’").startswith("P")
True
Категорії Unicode P * призначені спеціально для пунктуації :
з'єднувач (Pc), тире (Pd), початкова цитата (Pi), кінцева цитата (Pf), відкрита (Ps), закрита (Pe), інша (Po)
Щоб підготувати вичерпний збірник, який згодом ви можете використовувати для швидких перевірок членства, використовуйте набір розуміння:
>>> import sys
>>> from unicodedata import category
>>> codepoints = range(sys.maxunicode + 1)
>>> punctuation = {c for i in codepoints if category(c := chr(i)).startswith("P")}
>>> "'" in punctuation
True
>>> "’" in punctuation
True
Вираз присвоєння тут вимагає Python 3.8+, що еквівалентно старішим версіям Python:
chrs = (chr(i) for i in range(sys.maxunicode + 1))
punctuation = set(c for c in chrs if category(c).startswith("P"))
Слідкуйте за тим, що деякі інші символи string.punctuation
насправді знаходяться в категорії символу Unicode . Додайте їх також, якщо хочете.