Folgendes habe ich auf stackoverflow gefunden, vielleicht hilft's Dir ja weiter...
mutetella
alle index eines gesuchten Chars in einem String
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vermutlich eher nicht - man sollte schon den ganzen Thread lesenmutetella hat geschrieben:Folgendes habe ich auf stackoverflow gefunden, vielleicht hilft's Dir ja weiter...
mutetella
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Uralter Thread, aber das will ich nicht so stehen lassen...
...weil das key-Argument geradezu prädestiniert dafür ist, DSU zu vermeiden. Ungetestete Variante: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
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)
Streng genommen vermeidet man damit DSU in Python selber zu implementieren und verwendet stattdessen die bei CPython in C implementierte DSU-Implementierung von `sorted()`.