2017-12-27 60 views
2

我想從我的列表中刪除額外的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

回答

2

如果你想要去除的開頭和結尾的空格:

[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]