Вы должны перебрать список возвращенного find_all()
:
for i in soup.find_all('tag'):
txt = i.text
if 'string' not in txt:
print txt
В качестве альтернативы, вы можете создать еще один список, в котором нежелательные теги отфильтровываются:
filtered_lst = [i for i in soup.find_all('tag') if 'string' not in i.text]
Это даст вам список из Tag
объекты, похожие на те, что были возвращены find_all()
, но только с тегами, которые не включают 'string'
в их .text
. После этого вы можете делать то, что вы хотите, это:
for tag in filtered_lst:
print tag.text
Update:
С другой стороны, если ваша цель состоит в том, чтобы просто фильтровать 'string'
из текста тега, вы можете использовать метод replace()
строк:
for tag in soup.find_all('tag'):
print tag.text.replace('string', '')
Однако, имейте в виду, что это удалит 'string'
везде, где он находится в тексте, а может оставить нежелательные пробелы должны быть удалены позже. Например:
>>> 'hellostring string'.replace('string', '')
'hello '
Можете ли вы опубликовать полный, исполняемый пример? – scotty3785
* Но из-за использования метода find_all() для объекта obj ничего не печатается *, да есть определенно некоторый вывод, это была бы ошибка. –