Seite 1 von 1

String nach Muster durchsuchen (re.findall)

Verfasst: Mittwoch 5. Januar 2011, 00:17
von Geekpirat
Nabend zusammen.

Ich sitz da grad an einem Rätsel um etwas Python zu üben.
Meine Aufgabe ist es aus einer großen Menge zufällig zusammengewürfelter Buchstaben
(A-Z und a-z) alle kleinen Buchstaben die von jeweils drei Großbuchstaben umgeben ist zu extrahieren.
(Bsp.: ABCxDEF -> x ist gesucht)

Mein Code bis jetzt sieht so aus:

Code: Alles auswählen


import re

bodyguard = open("/home/user/Desktop/bodyguard", "r") 
#bodyguard ist eine Datei mit den über 100 Zeilen Buchstaben

for line in bodyguard:
    result = re.findall(r"[A-Z]{3}[a-z]{1}[A-Z]{3}", line)
    print result


Ergebnis (Ausschnitt):

Code: Alles auswählen

['ICAlNMW', 'LZAtOWE']
[]
[]
[]
['JGScCMT']
['AGAsECC']
Nun wo liegt das Problem:
  • re.search gibt mir ein MatchObject zurück. Damit kann ich aber nix anfangen...O_o
  • Python spuckt mir mehrere hundert Zeilen mit [] aus.
  • Würd ich gerne in einem (evtl. 2ten Schritt) die Uppercase Buchstaben auch noch rausfiltern.
  • Die Lowercase Buchstaben als einzelnen String vorliegen haben.
Vermutlich etwas viel für nen blutigen Anfänger...hm?!

Bin für Hilfestellungen dankbar. :)

Gruß
Geekpirat

Ps.: Bin übrigens bei Python 2.6 hängen geblieben.

Re: String nach Muster durchsuchen (re.findall)

Verfasst: Mittwoch 5. Januar 2011, 00:42
von BlackJack
@Geekpirat: Wenn eine leere Liste ausgegeben wird, dann ist in der betreffenden Zeile halt kein Treffer. Wo ist da das Problem!? Ansonsten könntest Du statt zeilenweise zu arbeiten auch `re.findall()` auf den gesamten Dateiinhalt loslassen.

Die Grossbuchstaben wirst Du zum Beispiel los, in dem Du das gewünschte in eine Gruppe fasst.

Da das IIRC eine Aufgabe aus http://www.pythonchallenge.com/ sollte man hier aber nicht zu viel verraten um anderen nicht den Spass am Rätseln zu nehmen. :-)

Re: String nach Muster durchsuchen (re.findall)

Verfasst: Mittwoch 5. Januar 2011, 00:45
von cofi
Geekpirat hat geschrieben:
  • re.search gibt mir ein MatchObject zurück. Damit kann ich aber nix anfangen...O_o
Dann solltest du mal die Doku dazu lesen: http://docs.python.org/library/re.html#re.MatchObject