从字符串列表的元素中删除尾随换行符

时间:2011-11-02 16:50:46

标签: python list strip

我必须在表格中列出大量的单词:

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

7 个答案:

答案 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']