157 votes

Supprimer la fin de ligne des éléments d'une liste de chaînes

Je dois prendre une grande liste de mots sous la forme :

 ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']

puis en utilisant la fonction strip, transformez-le en :

 ['this', 'is', 'a', 'list', 'of', 'words']

Je pensais que ce que j'avais écrit fonctionnerait, mais j'obtiens toujours une erreur disant :

"L'objet 'list' n'a pas d'attribut 'strip'"

Voici le code que j'ai essayé :

 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())

297voto

Sven Marnach Points 133943

Vous pouvez soit utiliser une compréhension de liste

 my_list = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
stripped = [s.strip() for s in my_list]

ou bien utilisez map() :

 stripped = list(map(str.strip, my_list))

Dans Python 2, map() renvoyait directement une liste, vous n'aviez donc pas besoin de l'appel à la liste. En Python 3, la compréhension de la liste est plus concise et généralement considérée comme plus idiomatique.

130voto

yosukesabai Points 2693

compréhension de la liste ? [x.strip() for x in lst]

70voto

Schnouki Points 2872

Vous pouvez utiliser des compréhensions de listes :

 strip_list = [item.strip() for item in lines]

Ou la fonction map :

 # with a lambda
strip_list = map(lambda it: it.strip(), lines)

# without a lambda
strip_list = map(str.strip, lines)

8voto

Casey Points 4095

Cela peut être fait en utilisant des compréhensions de liste telles que définies dans le PEP 202

 [w.strip() for w in  ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X