2016-05-23 17 views
1

私の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

データ構造setを利用することができます。これは、「一意性」のプロパティがあなたのために機能するためです。本質的には、あなたのリストをセットにしてからリストを再設定することができます。これにより、リストには厳密に一意の値が設定されます。あなたがリストlを持っていた場合、あなたがcounterまたはdefaultdict

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

使用することができ、繰り返しのリンクを印刷したくない場合は

は、その後、あなたは

l = list(set(l)) 
+0

ありがとうございます!これは本当に私を助けました! – Frank

+0

問題ない男!それは助けGlsd。私の答えを受け入れるように自由に記入してください(チェックボックス) –

0

ことによってそれを一意にすることができ良いことは、あなたが行うことによってリンクの繰り返し数を得ることもできることです。

sm_posts[sm_links] 
>>> link_counts 

それを試してください。

関連する問題