¿Sabes cómo eliminar puntuación y acento en Python? En este artículo veremos cómo se ven reflejados estos aspectos y cómo eliminarlos en caso de ser necesario, ya que muchas veces, principalmente con la puntuación, pueden surgir problemas de ruido de cara al procesamiento de los datos, por tanto, vamos a ver cómo eliminar puntuación y acento en Python para que no tener este tipo de inconvenientes.
Eliminar puntuación y acento en Python
La puntuación en Python
Vamos a ver qué pasa si importamos el módulo string:
import string
Después, escribimos:
#Eliminar puntuación y acento en Python
string.punctuation
Nos va a dar como resultado todos los caracteres especiales y signos de puntuación que acepta el módulo de string de Python:
‘ ! ” # $ % & \ ( ) * + , – . / : ; < = > ? @ [ \\ ] ^ _ ` { | } ~ ‘
Ahora lo que haremos es generar una tabla de transformación de los signos de puntuación:
#Eliminar puntuación y acento en Python
table = str.maketrans (' ' , ' ' , string.punctuation)
table
Cuando ejecutamos estos comandos, lo que nos saca es una tabla de conversión de los signos de puntuación mapeados a un diccionario. Entonces, si un signo x, digamos, por ejemplo, las comillas dobles, ocupan el puesto 61 en el diccionario de Python, ¿de qué nos sirve esto?
Para descubrirlo, vamos a hacer la conversión en Python. Podemos dividir por espacios:
#Eliminar puntuación y acento en Python
' a a a ' .split ()
[‘a’, ‘a’, ‘a’]
Luego, con la función join, podemos hacer una unión de strings y esta lista nos forma una palabra:
#Eliminar puntuación y acento en Python
' ' .join (['P', 'a', 'l', 'a', 'b', 'r', 'a'])
‘Palabra’
Podemos aplicar una list comprehension en Python, a la cual le aplicaremos un translate con la tabla:
#Eliminar puntuación y acento en Python
[word.translate (table) for word in sentence.split ()]
Más arriba, en table, tenemos la tabla con el diccionario de mapeos y aquí mapeamos cada palabra. Esto lo que hace es sustituirnos el carácter del string por la tabla, lo que quiere decir que, si encontramos caracteres especiales en el texto, se van a sustituir por nada (None).
Para eliminar los caracteres especiales y signos de puntuación, también podríamos utilizar el replace en Python, pero hacerlo de esta forma es más óptimo en cuanto a tiempos de ejecución.
Ahora, lo que haremos es aplicar otra vez una list comprehension que dice que se unan todos los acentos que se han encontrado en la lista y se separen por espacios:
#Eliminar puntuación y acento en Python
' '. join /([word.translate (ttable) for word in sentence.split ()])
‘Esta vez y lo juro ante el sagrado Necronomicón de Lovecraft pienso hablar de la película en sí por primera vez y esperando que no sirva de precedente aunque creo que es evidente que prefiero que una película me haga reflexionar sobre cualquier aspecto que en ella se dé cita.’
Aquí vemos que se han eliminado los signos de puntuación y se han reemplazado por espacios.
#Eliminar puntuación y acento en Python
import string
table = str.maketrans ( ' ' , ' ' , string.punctuation)
' ' .join ([word.translate (table) for word in sentence.split ()])
Estos comandos son el resumen de todo lo que hemos visto hasta ahora.
Los acentos en Python
Para eliminar acentos hay una forma más fácil que utilizar regex, y es el unicodedata:
#Eliminar puntuación y acento en Python
import unicodedata
#Eliminar puntuación y acento en Python
text_with_accents = 'Téxtô Ácéntuado ñ'
unicodedata.normalize ('NFKD', text_with_accents).encode ('ascii', 'ignore').decode ('utf-8', 'ignore')
En este caso lo que hace el unicodedata es que nos devuelve las letras sin acentuar. Veamos:
‘Texto Acentuado n’
Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo de la industria tech mejor pagadas, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva e íntegra de alta calidad adquirirás los conocimientos teóricos y prácticos imprescindibles para conseguir el trabajo de tus sueños en muy pocos meses. ¡No esperes más para impulsar tu futuro y pide más información ahora!