Eu tenho que ter uma grande lista de palavras no formulário:
['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
e, em seguida, usando a função strip, transforme-a em:
['this', 'is', 'a', 'list', 'of', 'words']
Eu pensei que o que havia escrito funcionaria, mas continuo recebendo um erro dizendo:
"O objeto 'list' não tem atributo 'strip'"
Aqui está o código que eu tentei:
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 vezes e depois suas linhas despojadas. Esse código tem um cheiro muito ruim. Além disso, se você tiver essas informações em um arquivo, você deve retirá-las no caminho - criar uma lista grande e depois colocá-la em outra lista grande não é uma boa idéia. Além disso, 2, seu código não deve depender de saber o comprimento da palavra / linha mais longa. Recue um pouco - o que você está tentando alcançar? Com o que você farástrip_list
?Respostas:
fonte
str.strip
só funciona se você tiver certeza de que a lista não contém seqüências de caracteres unicode. Se ele puder conter cadeias de caracteres de 8 bits e unicode, uselambda s: s.strip()
como mencionado acima ou use astrip
função que você pode importar dostrings
módulo.list
que sejalist(map(str.strip, my_list))
. Verifique também: link .compreensão da lista?
[x.strip() for x in lst]
fonte
Você pode usar a compreensão de listas :
Ou a
map
função:fonte
0
valores no início da lista também. Embora eu realmente não posso imaginar o que é que você está tentando realizar, colocando-os na mesma lista de resultados ...strip_list = list(map(str.strip, lines))
como map () retorna um iterador de mapa. docs.python.org/3/library/functions.html#mapIsso pode ser feito usando a compreensão da lista, conforme definido no PEP 202
fonte
list
demap
:)Todas as outras respostas, e principalmente sobre compreensão de lista, são ótimas. Mas apenas para explicar o seu erro:
a
é um membro da sua lista, não um índice. O que você poderia escrever é o seguinte:Outro comentário importante: você pode criar uma lista vazia desta maneira:
Mas isso não é tão útil, pois
.append
acrescenta coisas à sua lista. No seu caso, não é útil criar uma lista com valores padrão, pois você a criará item por item ao anexar strings removidas.Portanto, seu código deve ser como:
Mas, com certeza, o melhor é esse, pois é exatamente a mesma coisa:
Caso você tenha algo mais complicado do que apenas um
.strip
, coloque isso em uma função e faça o mesmo. Essa é a maneira mais legível de trabalhar com listas.fonte
Se você precisar remover apenas os espaços em branco à direita , poderá usar o
str.rstrip()
que deve ser um pouco mais eficiente do questr.strip()
:fonte
Resultado:
fonte