¿Algoritmo para obtener todas las palabras de un fichero en python?

Iniciado por pran_krr, 11 Noviembre 2019, 10:38 AM

0 Miembros y 1 Visitante están viendo este tema.

pran_krr

Lo que intento es leer un fichero y hacer una lista con todas las palabras del fichero de la forma más eficiente posible y quería saber si existe algún tipo de algoritmo que lo realice de la forma más eficiente posible. He probado con .split() pero no valdría ya que el fichero contiene caracteres los cuales no reconocería (p.e "," "-" "(" ...). Se hacerlo con el método de ir reconociendo cada caracter y cuando el que reconozca no sea una letra unir todos los caracteres y formar palabra y seguir haciendo esto en todo el fichero pero no se si hay alguna otra forma de hacerlo.

engel lex

la forma mas facil que se me ocurre es con regex,

un ejemplo

Código (python) [Seleccionar]
import re
text = "Lo que intento es leer un fichero y hacer una lista con todas las palabras del fichero de la forma más eficiente posible y quería saber si existe algún tipo de algoritmo que lo realice de la forma más eficiente posible. He probado con .split() pero no valdría ya que el fichero contiene caracteres los cuales no reconocería (p.e "," "-" "(" ...). Se hacerlo con el método de ir reconociendo cada caracter y cuando el que reconozca no sea una letra unir todos los caracteres y formar palabra y seguir haciendo esto en todo el fichero pero no se si hay alguna otra forma de hacerlo."

parts = re.findall(r"[a-záéíóúÁÉÍÓÚ]+",text,re.I)

# parts es un list que contiene lo siguiente
# ['Lo', 'que', 'intento', 'es', 'leer', 'un', 'fichero', 'y', 'hacer', 'una', 'lista', 'con', 'todas', 'las',
# 'palabras', 'del', 'fichero', 'de', 'la', 'forma', 'más', 'eficiente', 'posible', 'y', 'quería', 'saber',
# 'si', 'existe', 'algún', 'tipo', 'de', 'algoritmo', 'que', 'lo', 'realice', 'de', 'la', 'forma', 'más',
# 'eficiente', 'posible', 'He', 'probado', 'con', 'split', 'pero', 'no', 'valdría', 'ya', 'que', 'el',
# 'fichero', 'contiene', 'caracteres', 'los', 'cuales', 'no', 'reconocería', 'p', 'e', 'Se', 'hacerlo',
# 'con', 'el', 'método', 'de', 'ir', 'reconociendo', 'cada', 'caracter', 'y', 'cuando', 'el', 'que',
# 'reconozca', 'no', 'sea', 'una', 'letra', 'unir', 'todos', 'los', 'caracteres', 'y', 'formar', 'palabra',
# 'y', 'seguir', 'haciendo', 'esto', 'en', 'todo', 'el', 'fichero', 'pero', 'no', 'se', 'si', 'hay', 'alguna',
# 'otra', 'forma', 'de', 'hacerlo']


como regex nativamente no digiere las letras con acento las tuve que agregar (mayusculas y minusculas ya que no conoce ese concepto en esas letras), asi que cualquier otra (como ñ letras con dieresis, etc) deben ser agregadas a necesidad
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.