Regex und doppelte Einträge entfernen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Regex und doppelte Einträge entfernen

    Hallo alle zusammen!
    Bitte, helft mir mit meinem ersten selbständigen Python-Programm!
    Ich muss in einer Datei mittels Regex Wörter finden und sie auflisten. Das Problem ist, das ich alles, was ich brauche, finde, aber mit vielen doppelten Einträgen. Ich brauche aber jedes Wort nur ein Mal. Mein Code ist:
    f = open(datei)
    for line in f:
    for match in re.compile("[\w]{5,25}[^\d\W]").findall(line):
    if match in line:
    if match.startswith("A") | match.startswith("B") | match.startswith("C"):
    print match + " ",

    Ich habe im Internet viele Sachen gefunden, aber keine von gefundenen Lösungen funktioniert. Z.B das:
    dic={}
    for i in line:
    dic=''
    line=dic.keys()
    print line

    Oder das:
    line = list(set(line))

    Könnte mir jemand helfen? Danke
  • Dein Code:

    Quellcode

    1. f = open(datei)
    2. for line in f:
    3. for match in re.compile("[\w]{5,25}[^\d\W]").findall(line):
    4. if match in line:
    5. if match.startswith("A") | match.startswith("B") | match.startswith("C"):
    6. print match + " ",


    Warum speicherst du die gefundenen Wörter nicht und überprüfst ob du dieses Wort nicht schon gefunden hast? Folgender Code ist absolut ungetestet:

    Quellcode

    1. words = []
    2. f = open(datei)
    3. for line in f:
    4. for match in re.compile("[\w]{5,25}[^\d\W]").findall(line):
    5. if match in line:
    6. if match.startswith("A") | match.startswith("B") | match.startswith("C"):
    7. if match not in words:
    8. words += match
    9. for word in words:
    10. print word,
    Alles anzeigen


    Ehrlichgesagt verstehe ich aber deine Bedingung if match in line nicht und frage mich warum du if match.startswith("A") | match.startswith("B") | match.startswith("C") nicht als Teil der RE formulierst ...