¿Querés contar términos y detectar repeticiones en textos sin vueltas? En esta guía vas a aprender cómo hacer un script en python donde encuentre palabras repetidas con dos enfoques: uno rápido con collections.Counter y otro robusto con normalización, regex, lista de stopwords y exportación a CSV para reportes.
Cómo hacer un script en python donde encuentre palabras repetidas: decisión express
| Tu caso | Estrategia | Resultado |
|---|---|---|
| Texto corto/mediano (notas, blogs) | Counter + regex simple | Top palabras y frecuencias en consola |
| Texto “sucio” (acentos, mayúsculas, símbolos) | Normalización + stopwords | Conteo limpio y más útil |
| Varios archivos / pipeline | Script CLI + CSV | Automatizable y exportable |
Requisitos mínimos
- Python 3.8+ instalado (o virtualenv).
- Conocer lo básico de Python básico (strings, listas y módulos).
Enfoque 1: script rápido con Counter (10 líneas)
from collections import Counter import re
def contar_palabras(texto: str, top: int = 20):
# Minúsculas y solo letras/números (palabras con acentos incluidas)
tokens = re.findall(r"[a-zA-ZáéíóúñüÁÉÍÓÚÑÜ0-9]+", texto.lower())
return Counter(tokens).most_common(top)
if name == "main":
ejemplo = "Hola hola... ¿cómo estás? Hola, bien; bien bien!"
for palabra, freq in contar_palabras(ejemplo, top=10):
print(f"{palabra}: {freq}")
Docs útiles: collections.Counter, módulo re.
Enfoque 2: robusto con normalización, stopwords y exportación
Ideal para textos reales: noticias, correos o contenido web. Quitamos palabras vacías (como “de”, “la”, “y”), normalizamos acentos y exportamos a CSV.
from collections import Counter from unicodedata import normalize import csv, re, sys, argparse
Stopwords mínimas de ejemplo (ajustá según tu dominio)
STOPWORDS = {
"de","la","y","el","en","que","a","los","del","se","las","por","un",
"para","con","no","una","su","al","lo","como","más","o","pero","sus",
}
def limpiar(texto: str) -> str:
# Normaliza a NFKD y quita marcas diacríticas
txt = normalize("NFKD", texto).encode("ascii", "ignore").decode("ascii")
return txt.lower()
def tokenizar(texto: str):
return re.findall(r"[a-z0-9]+", texto)
def contar(texto: str, quitar_stop=True):
txt = limpiar(texto)
tokens = tokenizar(txt)
if quitar_stop:
tokens = [t for t in tokens if t not in STOPWORDS and len(t) >= 2]
return Counter(tokens)
def guardar_csv(contador: Counter, ruta: str, top: int = 100):
with open(ruta, "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["palabra","frecuencia"])
for palabra, freq in contador.most_common(top):
w.writerow([palabra, freq])
if name == "main":
ap = argparse.ArgumentParser()
ap.add_argument("-i","--input", help="Ruta del archivo de texto (o dejar vacío para stdin)")
ap.add_argument("-o","--output", default="frecuencias.csv", help="Salida CSV")
ap.add_argument("--no-stop", action="store_true", help="No quitar stopwords")
ap.add_argument("--top", type=int, default=100, help="Top N palabras")
args = ap.parse_args()
data = ""
if args.input:
with open(args.input, encoding="utf-8") as f:
data = f.read()
else:
data = sys.stdin.read()
contador = contar(data, quitar_stop=not args.no_stop)
guardar_csv(contador, args.output, top=args.top)
print(f"OK: {args.output} generado con top={args.top}")
Cómo usar el script CLI
- Guardá el código como
repetidas.py. - Ejecutá con archivo:
python repetidas.py -i articulo.txt -o frecuencias.csv --top 50 - O pasá el texto por stdin:
type articulo.txt | python repetidas.py --top 30
Si necesitás una lista más completa de palabras vacías, mirá stopwords y limpieza de texto y adaptá STOPWORDS a tu tema (legal, técnico, médico, etc.).
Tal vez también te interese saber Cómo hacer streaming de juegos en múltiples plataformas sin cortes.
Mejoras opcionales (según tu caso)
- Unicode sin perder acentos: si querés conservar “acción” distinto de “accion”, salteate
normalizey ajustá la regex para letras con acento. - Lematización: convierte “corriendo/corrí” a “correr” para agrupar variantes (requiere librería NLP).
- Expresiones multi-palabra: detectá n-gramas (bigramas/trigramas) para frases repetidas.
- Reporte HTML/Excel: además del CSV, generá una tabla HTML o un XLSX con formato.
Pruebas rápidas y calidad
- Probá con ejemplos que incluyan mayúsculas, acentos, signos y números.
- Verificá que “la, la; LA” cuenten como la misma palabra tras la limpieza.
- Revisá que las stopwords no eliminen términos clave de tu nicho.
Errores comunes (y cómo evitarlos)
- Quitar demasiadas palabras: usa una lista de stopwords corta y específica.
- Regex muy permisiva: podría capturar basura (emojis/códigos). Ajustá al corpus real.
- Encoding: abrí archivos en
utf-8y testea con acentos/ñ.
Cierre y próximos pasos
Con estos bloques ya dominás cómo hacer un script en python donde encuentre palabras repetidas: limpieza, tokenización, conteo y exportación. Desde acá, podés sumar n-gramas, lemas y dashboards para análisis más profundo.
Preguntas frecuentes
¿Por qué usar Counter y no un diccionario manual?
Counter optimiza el conteo y trae utilidades como most_common(), ideal para rankings rápidos.
¿Conviene eliminar acentos?
Depende del caso. Quitarlos unifica “acción/accion”; conservarlos diferencia términos. Elegí según tu dominio.
¿Cómo excluyo números, URLs o emojis?
Ajustá la regex de tokenización para aceptar solo letras o agregá filtros específicos para patrones que quieras descartar.
¿Puedo procesar muchos archivos a la vez?
Sí: recorré una carpeta, concatená textos y contá con el mismo pipeline. Luego exportá un CSV por archivo o uno global.

![15 mejores sitios web para descargar libros de texto PDF gratuitos (lista actualizada de 2025) 15 mejores sitios web para descargar libros de texto PDF gratuitos [2024 Edition]](https://www.jonatanalmeira.com/wp-content/uploads/2025/04/15-mejores-sitios-web-para-descargar-libros-de-texto-PDF.webp.webp)





