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 de tira, 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 el 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())
strip_list
19 veces y luego agrega las líneas despojadas. Ese código huele muy mal. Además, si obtuviste esas cosas de un archivo, deberías eliminarlas en el camino: construir una lista grande y luego convertirla en otra lista grande no es una buena idea. También 2, su código no debe depender de conocer la longitud de la palabra / línea más larga. Retrocede un poco: ¿qué estás tratando de lograr? ¿Con qué vas a hacerstrip_list
?Respuestas:
fuente
str.strip
solo funciona si está seguro de que la lista no contiene cadenas unicode. Si puede contener cadenas de 8 bits y unicode, uselambda s: s.strip()
como se mencionó anteriormente o use lastrip
función que puede importar desde elstrings
módulo.list
, para que así sealist(map(str.strip, my_list))
. También verifique eso: enlace .lista de comprensión?
[x.strip() for x in lst]
fuente
Puedes usar listas de comprensión :
O la
map
función:fuente
0
valores al principio de la lista. Aunque realmente no puedo imaginar qué es lo que estás tratando de lograr al ponerlos en la misma lista de resultados ...strip_list = list(map(str.strip, lines))
como map () devuelve un iterador de mapa. docs.python.org/3/library/functions.html#mapEsto se puede hacer usando listas de comprensión como se define en PEP 202
fuente
list
amap
:)Todas las otras respuestas, y principalmente sobre la comprensión de la lista, son geniales. Pero solo para explicar su error:
a
es un miembro de su lista, no un índice. Lo que podrías escribir es esto:Otro comentario importante: puede crear una lista vacía de esta manera:
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 lo creará elemento por elemento al agregar cadenas despojadas.Entonces su código debería ser como:
Pero, seguro, el mejor es este, ya que es exactamente lo mismo:
En caso de que tenga algo más complicado que solo un
.strip
, ponga esto en una función y haga lo mismo. Esa es la forma más fácil de trabajar con listas.fuente
Si necesita eliminar solo los espacios en blanco al final , puede usar
str.rstrip()
, que debería ser un poco más eficiente questr.strip()
:fuente
Salida:
fuente