Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

803
Vistas
Conjunto completo de signos de puntuación para Python (no solo ASCII)

¿Hay una lista o biblioteca que tenga todos los signos de puntuación con los que nos podemos encontrar comúnmente?

Normalmente uso string.punctuation , pero algunos caracteres de puntuación no están incluidos, por ejemplo:

 >>> "'" in string.punctuation True >>> "'" in string.punctuation False
over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

Como han señalado otras respuestas, la forma de hacerlo es a través de las propiedades/categorías de Unicode. La respuesta aceptada accede a esta información a través del módulo unicodedata de la biblioteca estándar, pero según el contexto en el que lo necesite, podría ser más rápido o más conveniente acceder a esta misma información de propiedad mediante expresiones regulares.

Sin embargo, el re de biblioteca estándar no proporciona soporte Unicode extendido. Para eso, necesita el módulo regex , disponible en PyPI ( pip install regex ):

 >>> import regex as re >>> re.match("\p{Punctuation}", "'") <regex.Match object; span=(0, 1), match="'"> >>> re.match("\p{Punctuation}", "'") <regex.Match object; span=(0, 1), match='''>

Aquí se proporciona una buena descripción general de todos los diferentes tipos de propiedades Unicode que puede buscar mediante expresiones regulares. Además de estas funciones adicionales de expresión regular, que están documentadas en su página de inicio de PyPI, regex proporciona deliberadamente la misma API que re , por lo que se espera que use la documentación de re para descubrir cómo usar cualquiera de ellas.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede que te vaya mejor con esta comprobación:

 >>> import unicodedata >>> unicodedata.category("'").startswith("P") True >>> unicodedata.category("'").startswith("P") True

Las categorías Unicode P* son específicamente para puntuación :

conector (Pc), guión (Pd), comilla inicial (Pi), comilla final (Pf), abrir (Ps), cerrar (Pe), otro (Po)

Para preparar la colección exhaustiva, que luego puede usar para verificaciones rápidas de membresía, use una comprensión establecida:

 >>> 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

La expresión de asignación aquí requiere Python 3.8+, equivalente para versiones anteriores de Python:

 chrs = (chr(i) for i in range(sys.maxunicode + 1)) punctuation = set(c for c in chrs if category(c).startswith("P"))

Tenga en cuenta que algunos de los otros caracteres en string.punctuation están en realidad en la categoría Símbolo Unicode. Es fácil agregarlos también si lo desea.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta publicada por wim es correcta si desea verificar si un carácter es un carácter de puntuación.

Si realmente necesita una lista de todos los caracteres de puntuación como sugiere el título de su pregunta, puede usar lo siguiente:

 import sys from unicodedata import category punctuation_chars = [chr(i) for i in range(sys.maxunicode) if category(chr(i)).startswith("P")]
over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de wim es excelente si puede cambiar su código para usar una función.

Pero si tiene que usar el operador in (por ejemplo, está llamando al código de la biblioteca), puede usar la escritura pato:

 import unicodedata class DuckType: def __contains__(self,s): return unicodedata.category(s).startswith("P") punct=DuckType() #print("'" in punct,'"' in punct,"a" in punct)
over 4 years ago · Santiago Trujillo Denunciar

0

Eso parece un buen trabajo para una expresión regular (regexp):

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

Aquí, la expresión regular coincide con todo, excepto con espacios en blanco o caracteres de palabras. El indicador re.UNICODE se utiliza para hacer coincidir el conjunto completo de caracteres Unicode.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda