去掉一个string列表中的所有元素

我必须在表格中列出一大堆单词:

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

然后使用strip函数,把它变成:

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

我以为我写了什么可以工作,但我不断收到一个错误说:

“'list'对象没有属性'strip'”

这是我试过的代码:

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

列表理解? [x.strip() for x in lst]

你可以使用列表推导 :

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

或者mapfunction:

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

这可以使用PEP 202中定义的列表parsing来完成

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

所有其他的答案,主要是列表理解,都很好。 但只是为了解释你的错误:

 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是你列表的成员,而不是索引。 你可以写的是这样的:

 [...] for a in lines: strip_list.append(a.strip()) 

另一个重要的评论:你可以这样创build一个空列表:

 strip_list = [0] * 20 

但是这不是很有用,因为.append 东西附加到列表中。 在你的情况下,创build一个带有默认值的列表是没有用的,因为当你添加被剥离的string时,你会为每个项目创build一个项目。

所以你的代码应该是这样的:

 strip_list = [] for a in lines: strip_list.append(a.strip()) 

但是,当然,最好的是这个,因为这完全一样:

 stripped = [line.strip() for line in lines] 

如果你有一些比.strip更复杂的.strip ,把它放在一个函数中,并且执行相同的操作。 这是使用列表最可读的方式。

你也可以使用地图,以及…

my_list = ['this \ n','是\ n','\ n','列表\ n','\ n','单词\ n']

地图(str.split,my_list)