2010-10-23 31 views
1

我的標籤列表:更換空格

>>> tags_list 
['tag1', 'second tag', 'third longer tag'] 

我如何可以替換「+」列表中的每個元素中的空格?我試圖用正則表達式來完成此操作,但每個字符串保持不變:

for tag in tags_list: 
    re.sub("\s+" , " ", tag) 

我的方法有什麼問題?

編輯:

是的,我忘了提,即在每個標籤之間的話,我們可以有多個空格以及標籤可以開始或結尾的空格,因爲他們是用逗號分隔的字符串解析split(「,」):(「第一個標記,第二個標記,第三個標記」)。對不起,不夠精確。

回答

6

re.sub()返回一個新的字符串,它不會原地修改其參數。

你可能想:

tags_list = [re.sub(r"\s+", "+", tag) for tag in tags_list] 

另外,不要忘了正則表達式之前r或者你必須將所有反斜槓內(即您發佈的正則表達式將無法正常工作)。

編輯:我假設replace whitespaces within each element of the list with "+"意味着摺疊所有連續的空白到單個+字符。如果不是,請使用r"\s"而不是r"\s+"

2

你在做什麼並不是用+替代空格,而是用一個空格替換多個空白字符,最重要的是你將結果扔出去。以下是你需要什麼:

>>> tags = ['tag1', 'second tag', 'third longer tag'] 
>>> [re.sub(r'\s+', '+', i.strip()) for i in tags] 
['tag1', 'second+tag', 'third+longer+tag'] 
>>> tags 
['tag1', 'second tag', 'third longer tag'] 
+0

作爲@Axidos在我刪除答案評論指出,這並不連續空格或製表符,換行符工作。 – 2010-10-23 14:17:27

+0

@Space:OP顯然錯誤地表達了他的實際任務。如果你看他的例子,他根本不處理連續的空白。 – SilentGhost 2010-10-23 14:23:22

0
>>> tags = ['tag1', 'second tag', 'third longer tag'] 
>>> [ '+'.join(i.split()) for i in tags ] 
['tag1', 'second+tag', 'third+longer+tag']