String nach Muster durchsuchen (re.findall)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Geekpirat
User
Beiträge: 4
Registriert: Dienstag 4. Januar 2011, 22:56

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.
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. :-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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
Antworten