Bạn có thể làm tốt hơn với kiểm tra này:
>>> import unicodedata
>>> unicodedata.category("'").startswith("P")
True
>>> unicodedata.category("’").startswith("P")
True
Các loại Unicode P * được dành riêng cho Dấu câu :
đầu nối (Pc), dấu gạch ngang (Pd), trích dẫn ban đầu (Pi), trích dẫn cuối cùng (Pf), mở (Ps), đóng (Pe), khác (Po)
Để chuẩn bị bộ sưu tập đầy đủ, mà sau đó bạn có thể sử dụng để kiểm tra tư cách thành viên nhanh chóng, hãy sử dụng một bộ hiểu:
>>> 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
Biểu thức chuyển nhượng ở đây yêu cầu Python 3.8+, tương đương với các phiên bản Python cũ hơn:
chrs = (chr(i) for i in range(sys.maxunicode + 1))
punctuation = set(c for c in chrs if category(c).startswith("P"))
Coi chừng một số ký tự khác string.punctuation
thực sự nằm trong biểu tượng Unicode . Thật dễ dàng để thêm những người trong nếu bạn muốn.