String: Wildcard ?!

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
Benutzeravatar
Kolazomai
User
Beiträge: 33
Registriert: Donnerstag 16. Februar 2006, 15:05
Kontaktdaten:

Hi Leute,

ich habe ein Problem. Und zwar will ich aus einem sehr unübersichtlichen String etwas rausfiltern. Ich weiss, mit was es anfängt und mit was es aufhört. Aber nicht, was dazwischen ist.

Zum Beispiel:

"XXXXXXXXXXXaaabbbcccXXXXXXXXXXXXX"

wobei sich "bbb" zu irgendetwas ändert. XXXX sind immer neue verschiedene unbekannte, die unwichtig sind.

Es ist nicht so einfach, dass ich das mit .split machen kann, oder doch?

Im Prinzip brauch ich ein "grep aaa*ccc".
Sollte jedoch auf Win32 auch funktionieren,deshalb ist das nicht möglich ^^.

Mit welcher Funktion kann ich das machen ? Ich hab jetzt google lange gequäled, aber re und string können das anscheinend nicht oder mir ist eine spezielle Funktion entgangen.

Danke für alle Antworten,

Mfg,

Kolazomai
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Also wenn der gewünschte Teil immer zwischen "aaa" und "ccc" liegt, geht das schon mit split:

Code: Alles auswählen

s = [
    "kfafhgagkföafkaaaeinscccadrekrjakerjl",
    "aksfjAFDaerjlaaazweicccEARaeRErearkr",
    "AAERYXDXEAaaadreicccAERKJAKJA"
]

for line in s:
    text = line.split("aaa")[1].split("ccc")[0]
    print text
    # oder: print "aaa%sbbb" % text
Mit einer Regex natürlich auch, Geschmackssache :)

Gruß, mawe
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:Mit einer Regex natürlich auch, Geschmackssache :)
Eine Regex, jaaa!

Code: Alles auswählen

import re
s = [
    "kfafhgagkföafkaaaeinscccadrekrjakerjl",
    "aksfjAFDaerjlaaazweicccEARaeRErearkr",
    "AAERYXDXEAaaadreicccAERKJAKJA"
]

for line in s:
    text = re.findall(r'aaa(.*)ccc', line)[0]
    print text
    # oder: print "aaa%(text)sccc" % locals()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten