去掉一个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]
或者map
function:
# 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)