2016-11-28 5 views
-2

Ich versuche, einen Datensatz einzurichten, der überprüft, wie oft mehrere verschiedene Namen in einer Liste von Artikeln erwähnt werden. Also für jeden Artikel möchte ich wissen, wie oft nameA, nameB usw. erwähnt werden. Allerdings habe ich Probleme mit der Iteration über die Liste.Iterate über eine Liste von Zeichenfolgen in Python

Mein Code ist folgende:

for element in list_of_names: 
for i in list_of_articles: 
    list_of_namecounts = len(re.findall(element, i)) 
  1. list_of_names = eine Zeichenkette mit mehreren Namen [namea nameB namec]
  2. list_of_articles = eine Liste mit 40.000 Strings, die Artikel sind

Beispiel für Artikel in list_of_articles:

  1. Index: 1
  2. Typ: str
  3. Größe: Amsterdam - de financiële ...

der Fehler i erhalten ist: erwartete String oder

ich aber, dass Puffer, wenn sie über die iteriert Liste von Strings, dass der Befehl re.findall mit solchen Listen funktionieren sollte, aber auch für Python ziemlich neu ist. Irgendeine Idee, wie ich mein Problem hier lösen könnte?

Vielen Dank!

+0

're' für regulären Ausdruck steht. Sie verwenden keine regulären Ausdrücke. Sie suchen nach Filter. – trincot

+0

Welcher Typ ist Element? Welcher Typ ist ich? Debuggen Sie es irgendwie, vielleicht mit einem Druck. – Moberg

+0

Könnten Sie uns einen Teil von 'list_of_articles' geben? –

Antwort

0

Wenn Ihre Liste ist [ 'Apfel', 'Apfel', 'Banane'] und Sie wollen das Ergebnis: Anzahl des Apfels = 2, dann:

from collections import Counter 

list_count = Counter(list_of_articles) 

for element in list_of_names: 
    list_of_namecounts = list_count[element] 

Und list_of_namecounts unter der Annahme ist eine Liste ¿?

list_of_namecounts = [] 
for element in list_of_names: 
    list_of_namecounts.append(list_count[element]) 

See this for more understanding

+2

Es gibt keinen Grund, den' Counter' für jeden Namen neu zu erstellen. Der Konstruktor sollte sich außerhalb der Schleife befinden. –

+0

Fest, zu schnell :) – EmilioK

+0

Danke Patrick Haugh und EmilioK. Ich habe den Befehl ausprobiert, aber es gibt mir eine Gesamtzahl von Erwähnungen statt einer Zahl für jeden Artikel. Ist das korrekt? Wenn ja, kann ich den Code anpassen, um für jede Zeichenkette (= Artikel) in list_of_articles eine Anzahl zu erhalten? –

Verwandte Themen