我必须在表格中列出大量的单词:
['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())
答案 0 :(得分:172)
>>> 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']
答案 1 :(得分:97)
列表理解?
[x.strip() for x in lst]
答案 2 :(得分:47)
您可以使用lists comprehensions:
strip_list = [item.strip() for item in lines]
或map
功能:
# with a lambda
strip_list = map(lambda it: it.strip(), lines)
# without a lambda
strip_list = map(str.strip, lines)
答案 3 :(得分:8)
这可以使用PEP 202
中定义的列表推导来完成[w.strip() for w in ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]
答案 4 :(得分:2)
所有其他答案,主要是列表理解,都很棒。但只是为了解释你的错误:
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())
另一个重要评论:您可以这样创建一个空列表:
strip_list = [0] * 20
但这不太有用,因为.append
会将内容添加到您的列表中。在您的情况下,创建具有defaut值的列表没有用,因为在附加剥离的字符串时,您将为每个项目构建项目。
所以你的代码应该是:
strip_list = []
for a in lines:
strip_list.append(a.strip())
但是,当然,最好的就是这一个,因为这是完全相同的事情:
stripped = [line.strip() for line in lines]
如果你有一个比.strip
更复杂的东西,把它放在一个函数中,并做同样的事情。这是使用列表最可读的方式。
答案 5 :(得分:1)
如果仅需要删除 空格,则可以使用str.rstrip()
,它应该比str.strip()
效率更高:
>>> lst = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
>>> [x.rstrip() for x in lst]
['this', 'is', 'a', 'list', 'of', 'words']
>>> list(map(str.rstrip, lst))
['this', 'is', 'a', 'list', 'of', 'words']
答案 6 :(得分:-1)
my_list = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
print([l.strip() for l in my_list])
输出:
['this', 'is', 'a', 'list', 'of', 'words']