Mit dieser Prüfung könnten Sie es besser machen:
>>> import unicodedata
>>> unicodedata.category("'").startswith("P")
True
>>> unicodedata.category("’").startswith("P")
True
Die Unicode-Kategorien P * gelten speziell für Interpunktion :
Verbinder (Pc), Strich (Pd), Anfangszitat (Pi), Endzitat (Pf), Öffnen (Ps), Schließen (Pe), Sonstiges (Po)
Verwenden Sie ein festgelegtes Verständnis, um die umfassende Sammlung vorzubereiten, die Sie anschließend für schnelle Mitgliedschaftsprüfungen verwenden können:
>>> 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
Der Zuweisungsausdruck erfordert hier Python 3.8+, was älteren Python-Versionen entspricht:
chrs = (chr(i) for i in range(sys.maxunicode + 1))
punctuation = set(c for c in chrs if category(c).startswith("P"))
Beachten Sie, dass sich einige der anderen Zeichen string.punctuation
tatsächlich in der Unicode-Kategorie Symbol befinden . Es ist einfach, diese auch hinzuzufügen, wenn Sie möchten.