python3 - Pele todos los elementos de una lista de cuerdas
strip python 3 español (5)
Esto puede hacerse usando listas de comprensión como se define en PEP 202
[w.strip() for w in [''this/n'', ''is/n'', ''a/n'', ''list/n'', ''of/n'', ''words/n'']]
Tengo que tomar una gran lista de palabras en el formulario:
[''this/n'', ''is/n'', ''a/n'', ''list/n'', ''of/n'', ''words/n'']
y luego usando la función strip, conviértalo en:
[''this'', ''is'', ''a'', ''list'', ''of'', ''words'']
Pensé que lo que había escrito funcionaría, pero sigo recibiendo un error que dice:
El objeto ''list'' no tiene ningún atributo ''strip'' "
Aquí está el código que probé:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
Puedes usar listas de comprensión :
strip_list = [item.strip() for item in lines]
O la función de map
:
# with a lambda
strip_list = map(lambda it: it.strip(), lines)
# without a lambda
strip_list = map(str.strip, lines)
Todas las otras respuestas, y principalmente sobre la comprensión de la lista, son geniales. Pero solo para explicar tu error:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
a
es un miembro de su lista, no un índice. Lo que podrías escribir es esto:
[...]
for a in lines:
strip_list.append(a.strip())
Otro comentario importante: puedes crear una lista vacía de esta manera:
strip_list = [0] * 20
Pero esto no es tan útil, ya que .append
agrega cosas a su lista. En su caso, no es útil crear una lista con valores predeterminados, ya que la compilará elemento por artículo al agregar cadenas despojadas.
Entonces tu código debería ser como:
strip_list = []
for a in lines:
strip_list.append(a.strip())
Pero, seguro, el mejor es este, ya que es exactamente lo mismo:
stripped = [line.strip() for line in lines]
En caso de que tenga algo más complicado que solo una .strip
, ponga esto en una función, y haga lo mismo. Esa es la forma más legible de trabajar con listas.
lista de comprensión? [x.strip() for x in lst]
>>> my_list = [''this/n'', ''is/n'', ''a/n'', ''list/n'', ''of/n'', ''words/n'']
>>> map(str.strip, my_list)
[''this'', ''is'', ''a'', ''list'', ''of'', ''words'']