2016-03-28 9 views
0

Also habe ich eine Liste von Elementen aus einer HTML-Seite erstellt und die Häufigkeit dieser Elemente gezählt. Aber ich brauche nur einige spezifische Elemente wie "bb" und "nw". Ich weiß also nicht, welche Position sie in der Liste haben werden und ich bin mir nicht sicher, wie ich sie von den anderen Elementen trennen soll.Python: Bestimmte Listenelemente erhalten

Dies ist mein Code so weit:

from bs4 import BeautifulSoup 
import urllib2 
import re 
import operator 
from collections import Counter 
from string import punctuation 

source_code = urllib2.urlopen('https://de.wikipedia.org/wiki/Liste_von_Angriffen_auf_Fl%C3%BCchtlinge_und_Fl%C3%BCchtlingsunterk%C3%BCnfte_in_Deutschland/bis_2014') 
html = source_code.read() 
soup = BeautifulSoup(html, "html.parser") 

text = (''.join(s.findAll(text=True))for s in soup.findAll('a')) 

c = Counter((x.rstrip(punctuation).lower() for y in text for x in y.split())) 

bb,nw=operator.itemgetter(1,2)(c.most_common()) 
print(bb,nw) 

Vielen Dank für Ihre Hilfe und alle Hinweise.

+1

Was meinen Sie nur bestimmte Elemente benötigen? Meinst du, dass du ihre Frequenz brauchst? – Peaceful

Antwort

2

Sie einen Filter verwenden:

relevant_items = ('bb', 'nw') 
items = filter(lambda x: x[0] in relevant_items, c.most_common()) 

Alternativ können Sie bereits im Verständnis filtern:

c = Counter((x.rstrip(punctuation).lower() for y in text for x in y.split() if x in relevant_items)) 
+0

Vielen Dank. Das war genau das, was ich gesucht habe. –

Verwandte Themen