import re
def strip_tags(value):
"Return the given HTML with all tags stripped."
return re.sub(r'<[^>]*?>', '', value)
У меня есть эта функция для стрижки тегов HTML, но, похоже, она принимает только одно значение, что мне нужно изменить, если я хочу передать сразу несколько (не фиксированных) значений?
Спасибо
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
. Пока есть перед ним звездочка, вы можете называть ее как угодно.
Не могли бы вы использовать цикл.
for value in values:
strip_tags(value)
Вы можете передать value
в виде массива строк, а затем вернуть массив очищенных значений.
Если значения не зависят друг от друга, не изменяйте 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
import re
def strip_tags(values):
return map(lambda i: re.sub(r'<[^>]*?>', '', i), values)
вот функция, написанная над функцией, которую вы предоставили. это займет список значений и вернет соответствующий обработанный список:
import re
def strip_tags_list(values):
return map(strip_tags, values)
note: это будет работать на версиях python 2.6 и earleir. на python 3.0 вам нужно будет явно преобразовать результат map() в список, используя list().