41 votes

Ensemble complet de signes de ponctuation pour Python (pas seulement ASCII)

Existe-t-il une liste ou une bibliothèque contenant toutes les ponctuations que nous pourrions rencontrer couramment ?

Normalement, j'utilise string.punctuation , mais certains caractères de ponctuation n'y sont pas inclus, par exemple :

 >>> "'" in string.punctuation
True
>>> "'" in string.punctuation
False

18voto

Selcuk Points 15733

La réponse publiée par wim est correcte si vous voulez vérifier si un caractère est un caractère de ponctuation.

Si vous avez vraiment besoin d'une liste de tous les caractères de ponctuation comme le suggère le titre de votre question, vous pouvez utiliser ce qui suit :

 import sys
from unicodedata import category
punctuation_chars =  [chr(i) for i in range(sys.maxunicode) 
                             if category(chr(i)).startswith("P")]

2voto

xkcdjerry Points 837

La réponse de wim est géniale si vous pouvez modifier votre code pour utiliser une fonction.

Mais si vous devez utiliser l' in (par exemple, vous appelez le code de la bibliothèque), vous pouvez utiliser duck tapant :

 import unicodedata
class DuckType:
    def __contains__(self,s):
        return unicodedata.category(s).startswith("P")
punct=DuckType()
#print("'" in punct,'"' in punct,"a" in punct)

1voto

Nicolas Martinez Points 381

Cela semble être un joli travail pour une expression régulière (regexp):

     import re
    text = re.sub(r"[^\w\s]", "", str(text), flags=re.UNICODE)

Ici, l'expression rationnelle correspond à tout, à l'exception des espaces blancs ou des caractères de mot. L'indicateur re.UNICODE est utilisé pour faire correspondre un ensemble complet de caractères Unicode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X