Seite 1 von 1

String: Wildcard ?!

Verfasst: Freitag 28. April 2006, 21:26
von Kolazomai
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

Verfasst: Freitag 28. April 2006, 21:45
von mawe
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

Verfasst: Freitag 28. April 2006, 22:21
von Leonidas
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()