Как мне сказать python НЕ печатать элемент в списке?

Мой скрипт Python анализирует заголовки и ссылки из нескольких RSS-каналов. Я храню эти заголовки в списке и хочу убедиться, что никогда не буду печатать дубликаты. Как я могу это сделать?

    #!/usr/bin/python
 from twitter import *
 from goose import Goose
 import feedparser
 import time
 from pyshorteners import Shortener
 import pause
 import newspaper

 dr = feedparser.parse("http://www.darkreading.com/rss_simple.asp") 
 sm =feedparser.parse("http://www.securitymagazine.com/rss/topic/2654-cyber-tactics.rss")



dr_posts =["CISO Playbook: Games of War & Cyber Defenses",
         "SWIFT Confirms Cyber Heist At Second Bank; Researchers Tie Malware Code to Sony Hack","The 10 Worst Vulnerabilities of The Last 10 Years",
         "GhostShell Leaks Data From 32 Sites In 'Light Hacktivism' Campaign",
          "OPM Breach: 'Cyber Sprint' Response More Like A Marathon",
        "Survey: Customers Lose Trust In Brands After A Data Breach",
       "Domain Abuse Sinks 'Anchors Of Trust'",
       "The 10 Worst Vulnerabilities of The Last 10 Years",
]

sm_posts = ["10 Steps to Building a Better Cybersecurity Plan"]

x = 1

while True:

    try:

        drtitle = dr.entries[x]["title"]
        drlink = dr.entries[x]["link"]
        if drtitle in dr_posts:
            x += 1
            drtitle = dr.entries[x]["title"]
            drtitle = dr.entries[x]["link"]
            print drtitle + "\n" + drlink
            dr_posts.append(drtitle)
            x -= 1
            pause.seconds(10)
        else:
            print drtitle + "\n" + drlink
            dr_posts.append(drtitle)
            pause.seconds(10)

        smtitle = sm.entries[x]["title"]
        smlink = sm.entries[x]["link"]
        if smtitle in sm_posts:
            x +=1
            smtitle = sm.entries[x]["title"]
            smtitle = sm.entries[x]["title"]
            print smtitle + "\n" + smlink
            sm_posts.append(smtitle)
            pause.seconds(10)
    else:
        print smtitle + "\n" + smlink
        sm_posts.append(smtitle)
        x+=1
        pause.seconds(10)



except IndexError:
    print "FAILURE"
    break

Пока у меня только пропускаются записи. Это было бы проблемой, потому что, если есть еще один дубликат в строке RSS, то у меня будет еще больше дубликатов.

2 ответа

Решение

Вы можете использовать набор структуры данных, так как его свойство "уникальности" сделает всю работу за вас. По сути, мы можем сделать ваш список набором, а затем снова установить список, что гарантирует, что ваш список теперь заполнен строго уникальными значениями.

Если бы у вас был список l, вы могли бы сделать его уникальным,

l = list(set(l))

Если вы не хотите печатать повторяющуюся ссылку, вы можете использовать счетчик или defaultdict

sm_posts = defaultdict(int)
sm_posts[sm_links] += 1
print sm_posts.keys() #will print all the unique links

хорошо то, что вы также можете получить количество повторений ссылок, выполнив

sm_posts[sm_links]
>>> link_counts

попытайся.

Другие вопросы по тегам