String in definierte Zeichen und sonstige Zeichen teilen

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.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich hab's jetzt erstmal auf das reine Tokenizing runtergebrochen. Der Rest folgt später.

Code: Alles auswählen

_TEXT = 0
_SYMBOL = 1

def _tokenize(symbols, s):
    expr = '(%s)' % '|'.join(re.escape(sym) for sym in symbols)
    for i, value in enumerate(re.split(expr, s)):
        if value:
            yield i % 2, value
Soll halt nicht Teil der API sein, daher die Unterstriche.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Warum schreibst du das nicht als Generator Expression? Ungetestet:

Code: Alles auswählen

def _tokenize(symbols, s):
    expr = '(%s)' % '|'.join(re.escape(sym) for sym in symbols)
    return ((i % 2, value) for i, value in enumerate(re.split(expr, s)) if value)
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Hier noch eine Variante für die, die (so wie ich) keinen Vertrag mit RE haben ...
Denn wer den Vertrag eingeht, wird sowieso früher oder später geholt. :D
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

snafu hat geschrieben:@numerix: In dem speziellen Fall finde ich RE's handlicher.
Ja, ganz gewiss sind sie das. Elegant ist meine Lösung nicht.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

derdon hat geschrieben:Warum schreibst du das nicht als Generator Expression?
Weil ich verschachtelte GE's nicht so lesbar finde wie beim "altmodischen" Weg. Momentan versuche ich, solche Konstrukte zu vermeiden. Aber vielleicht ist es auch nur so eine Phase von mir... ^^
Antworten