У меня есть сценарий, где я рылась значения в красивом наборе результатов супа и обрабатывающие их по-разному в зависимости от их содержаний, например:Как удалить повторяющиеся значения из красивого набора результатов супа при сохранении заказа?
for i in bs_result_set:
if 'this unique string' in i.text:
print 'aaaa'
else:
print 'bbbb'
Однако я понял, что единственное условие на самом деле происходит в два раза в результате однако мне не нужно это второе значение репликации, и поэтому вы хотите удалить его из набора результатов в первую очередь.
Я попытался подходить к удалению повторяющихся значений в list
(при сохранении порядка), но они, похоже, не работают на объекте, который является красивым набором результатов супа. Например, я использовал логику от this post попробовать:
from collections import OrderedDict
OrderedDict.fromkeys(bs_result_set).keys()
Но это, похоже, не удалить повторяющиеся значения.
Итак, мой вопрос заключается в том, как удалить повторяющиеся значения из набора результатов прекрасного супа при сохранении порядка?
Что определяет дубликат хоть? Значения атрибутов равны? Или просто имена атрибутов? Должно ли текстовое содержимое соответствовать точно или только обе имеют одну и ту же подстроку? Как насчет вложенных элементов? –
хорошие вопросы, значения являются точными дубликатами, они оба являются div, содержащими много текста, html-тегов и комментариев. – user1063287
Интересно тогда, что трюк 'OrderedDict.fromkeys() не работает для вас; Элементы BS4 'Tag' определяют равенство именно так; одно и то же имя, те же атрибуты (имена и значения) и одинаковое содержимое (проверено рекурсивно). Можете ли вы проверить, является ли 'elemA == elemB'' True' для элементов, которые, по вашему мнению, являются дубликатами? –