una separar reemplazar palabra lista letras funcion comparar como caracteres cadenas python list split text-segmentation

reemplazar - separar python



¿Cómo dividir una cadena en una lista? (10)

Quiero que mi función python divida una oración (entrada) y almacene cada palabra en una lista

El método str().split() hace esto, toma una cadena, la divide en una lista:

>>> the_string = "this is a sentence" >>> words = the_string.split(" ") >>> print(words) [''this'', ''is'', ''a'', ''sentence''] >>> type(words) <type ''list''> # or <class ''list''> in Python 3.0

El problema que está teniendo es debido a un error tipográfico, usted escribió print(words) lugar de print(word) :

Cambiando el nombre de la variable de word a current_word , esto es lo que tenías:

def split_line(text): words = text.split() for current_word in words: print(words)

..cuando deberías haber hecho:

def split_line(text): words = text.split() for current_word in words: print(current_word)

Si, por algún motivo, desea construir manualmente una lista en el bucle for, usaría el método list append() , quizás porque desea escribir en minúsculas todas las palabras (por ejemplo):

my_list = [] # make empty list for current_word in words: my_list.append(current_word.lower())

O más un poco más ordenado, usando una list-comprehension :

my_list = [current_word.lower() for current_word in words]

Quiero que mi función Python divida una oración (entrada) y almacene cada palabra en una lista. Mi código actual divide la oración, pero no almacena las palabras como una lista. ¿Cómo puedo hacer eso?

def split_line(text): # split the text words = text.split() # for each word in the line: for word in words: # print the word print(word)


¿Qué tal este algoritmo? Dividir texto en espacios en blanco, luego recortar puntuación. Esto elimina cuidadosamente la puntuación del borde de las palabras, sin dañar los apóstrofes dentro de palabras como la we''re .

>>> text "''Oh, you can''t help that,'' said the Cat: ''we''re all mad here. I''m mad. You''re mad.''" >>> text.split() ["''Oh,", ''you'', "can''t", ''help'', "that,''", ''said'', ''the'', ''Cat:'', "''we''re", ''all'', ''mad'', ''here.'', "I''m", ''mad.'', "You''re", "mad.''"] >>> import string >>> [word.strip(string.punctuation) for word in text.split()] [''Oh'', ''you'', "can''t", ''help'', ''that'', ''said'', ''the'', ''Cat'', "we''re", ''all'', ''mad'', ''here'', "I''m", ''mad'', "You''re", ''mad'']


Creo que estás confundido debido a un error tipográfico.

Reemplace print(words) con print(word) dentro de su bucle para que cada palabra se imprima en una línea diferente


Dependiendo de lo que planee hacer con su oración como una lista, es posible que desee ver el kit de toma de lenguaje natural . Se trata en gran medida de procesamiento de texto y evaluación. También puedes usarlo para resolver tu problema:

import nltk words = nltk.word_tokenize(raw_sentence)

Esto tiene el beneficio adicional de dividir la puntuación.

Ejemplo:

>>> import nltk >>> s = "The fox''s foot grazed the sleeping dog, waking it." >>> words = nltk.word_tokenize(s) >>> words [''The'', ''fox'', "''s", ''foot'', ''grazed'', ''the'', ''sleeping'', ''dog'', '','', ''waking'', ''it'', ''.'']

Esto le permite filtrar cualquier puntuación que no desee y usar solo palabras.

Tenga en cuenta que las otras soluciones que utilizan string.split() son mejores si no planea hacer ninguna manipulación compleja de la oración.

[Editado]


Divide la cadena en text en cualquier ejecución consecutiva de espacios en blanco.

words = text.split()

Dividir la cadena en text en delimitador: "," .

words = text.split(",")

La variable de palabras será una list y contendrá las palabras del text dividido en el delimitador.


Puedes usar sta ( cadena a matriz )

pip install sta

entonces

print(list("word")) # [''w'', ''o'', ''r'', ''d''] print(list("some word")) # [''s'', ''o'', ''m'', ''e'', '' '', ''s'', ''e'', ''n'', ''t'', ''e'', ''n'', ''c'', ''e'']


Si desea almacenar todos los caracteres de una palabra / oración en una lista, haga lo siguiente:

>>> import sta >>> sta("some words on a list") [''some'', ''words'', ''on'', ''a'', ''list'']


str.split()

Devuelva una lista de las palabras en la cadena, usando sep como delimitador ... Si sep no se especifica o es Ninguno, se aplica un algoritmo de división diferente: las corridas de espacios en blanco consecutivos se consideran como un solo separador, y el resultado contendrá no hay cadenas vacías al principio o al final si la cadena tiene espacios en blanco iniciales o finales.

>>> line="a sentence with a few words" >>> line.split() [''a'', ''sentence'', ''with'', ''a'', ''few'', ''words''] >>>


shlex tiene una función .split() . Se diferencia de str.split() en que no conserva las comillas y trata una frase entre comillas como una sola palabra:

>>> import shlex >>> shlex.split("sudo echo ''foo && bar''") [''sudo'', ''echo'', ''foo && bar'']


text.split()

Esto debería ser suficiente para almacenar cada palabra en una lista. words ya son una lista de las palabras de la oración, por lo que no es necesario el bucle.

En segundo lugar, puede ser un error tipográfico, pero tiene un poco de problemas. Si realmente quisieras usar el apéndice, sería:

words.append(word)

no

word.append(words)