问题:从字符串列表的元素中删除结尾的换行符
我必须采用以下形式的大量单词:
['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
>>> 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
清单理解力?
[x.strip() for x in lst]
回答 2
您可以使用列表推导:
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
这可以使用PEP 202中定义的列表理解来完成
[w.strip() for w in ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]
回答 4
所有其他答案,主要是关于列表理解的,都很棒。但是只是为了解释您的错误:
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
将内容追加到列表中。在您的情况下,创建带有默认值的列表是没有用的,因为在附加剥离字符串时,将逐项构建该列表。
因此,您的代码应类似于:
strip_list = []
for a in lines:
strip_list.append(a.strip())
但是,可以肯定的是,最好的选择就是这个,因为这是完全一样的:
stripped = [line.strip() for line in lines]
如果您遇到的不仅仅是a复杂的事情.strip
,请将其放在函数中并执行相同的操作。这是使用列表最易读的方式。
回答 5
如果您只需要删除结尾的空格,则可以使用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
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']
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。