2010-01-17 51 views
1
import re 
def strip_tags(value): 
    "Return the given HTML with all tags stripped." 
    return re.sub(r'<[^>]*?>', '', value) 

我有這個功能剝離HTML標籤,但它似乎只接受單一的價值,我需要做什麼改變,如果我想通過多(不固定)價值一次?傳遞多個值的函數調用(Python)的

謝謝

回答

8

python提供了一種使用任意長度的參數列表:

def myfunc(*args): 
    for argument in args: 
     print "myfunc was given", argument 

如果你把*args在函數定義,傳遞給函數的所有值都可以作爲一個名爲args元組。請注意,您也可以把其他參數*args之前, 像

def my_other_func(name, *args): 

所以第一個參數將作爲name,其餘的將在元組args

調用此參數args是慣例,但不是必需的。只要前面有一個星號,就可以隨心所欲地稱呼它。

+0

沒有說明如何使用不僅*也**(字典)傳遞參數,這裏好(和非常快)教程:HTTP://www.technovelty .ORG /代碼/蟒/ asterisk.html – Roman 2010-01-17 17:51:59

2

您可以使用循環。

for value in values: 
    strip_tags(value) 
1

你可以在value通過作爲一個字符串數組,然後返回清潔值的數組。

1
import re 
def strip_tags(values): 
    return map(lambda i: re.sub(r'<[^>]*?>', '', i), values) 
0

這是一個寫在您提供的函數上的函數。這將採取值的列表並返回相應的處理列表:

import re 
def strip_tags_list(values): 
    return map(strip_tags, values) 

注意:這將工作在python 2.6和earleir版本。在python 3.0上,你必須顯式地使用list()將map()的結果轉換爲列表。

1

如果值是相互獨立的,那麼不用修改strip_tags的,只是改變你怎麼稱呼它:

values = [some_value, another_value] 
values = [strip_tags(v) for v in values] 
# values[0] is now the strip_tags version of the old values[0] 
# similar to values[0] = strip_tags(values[0]), except for every item 

如果值是相關的,如被同一文件的相鄰塊,然後使用用strip_tags之前將它們連接起來:

values = [some_value, another_value] 
result = strip_tags("".join(values)) 
# note result is single string