alle index eines gesuchten Chars in einem String

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
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Folgendes habe ich auf stackoverflow gefunden, vielleicht hilft's Dir ja weiter...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

mutetella hat geschrieben:Folgendes habe ich auf stackoverflow gefunden, vielleicht hilft's Dir ja weiter...

mutetella
Vermutlich eher nicht - man sollte schon den ganzen Thread lesen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

OK
Danke
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

Uralter Thread, aber das will ich nicht so stehen lassen...
pillmuncher hat geschrieben:

Code: Alles auswählen

from operator import itemgetter

lookup = {c:i for i, c in enumerate('DAHSRKLIM...')} # D < A < H < S < ...

def ordered_records(filename, order_index):
    order_key = itemgetter(0)
    with open(filename, 'r') as records:
        for record in csv.reader(records, delimiter=' '):
            keys = (lookup[c] for c in record[order_index])
            tmp = zip(keys, record)             # Decorate
            tmp.sort(key=order_key)             # Sort
            yield [field for _, field in tmp]   # Undecorate
...weil das key-Argument geradezu prädestiniert dafür ist, DSU zu vermeiden. Ungetestete Variante:

Code: Alles auswählen

lookup = {c:i for i, c in enumerate('DAHSRKLIM...')} # D < A < H < S < ...

def ordered_records(filename, order_index):
    def order_key(record):
        return lookup[record[order_index]]
    with open(filename, 'r') as records:
        for record in csv.reader(records, delimiter=' '):
            yield sorted(record, key=order_key)
BlackJack

Streng genommen vermeidet man damit DSU in Python selber zu implementieren und verwendet stattdessen die bei CPython in C implementierte DSU-Implementierung von `sorted()`.
Antworten