如何从python 3的列表项中删除多个空格或\ t?

如何从python 3的列表项中删除多个空格或\ t?

问题描述:

我想从我的列表中删除额外的balnks和字符,但我无法完成,虽然我试过split(),strip()和下面的代码。我该怎么做?如何从python 3的列表项中删除多个空格或 t?

我试过的是;

import re 

movie_list=[" The Room"," Boyhood","\t\tThe Help"] 


for i in movie_list: 
    i=re.sub('[ \t]+' , ' ',i) 
print(movie_list) 
+0

所有你做在'for'循环重新绑定变量'i';你没有改变名单。为此,您需要为列表编制索引。您可以使用['enumerate'](https://docs.python.org/3.6/library/functions.html#enumerate)获取索引(以及列表成员)。 – glibdud

+0

@glibdud是的,你是对的。它现在工作!谢谢.. – Beyza

如果你想要去除的开头和结尾的空格:

[m.strip() for m in movie_list] 

它提供:

['The Room', 'Boyhood', 'The Help'] 

如果你想删除重复的空格:

import re 
[re.sub(r'[ \t]+', '', m) for m in movie_list] 

你也可以结合两者:

import re 
[re.sub(r'[ \t]+', '', m.strip()) for m in movie_list] 

在你的榜样,要注意一个事实,即i=re.sub('[ \t]+' , ' ',i)重新定义变量i修改您的列表。要实际进行更改列表,您可以

for index, value in enumerate(movie_list): 
    movie_list[index] = some_function(value) 

或重新定义movie_list

movie_list = [some_function(m) for m in movie_list]