ich möchte gerne diese Liste
Code: Alles auswählen
names = "4-1, 4-2, 4-4, 4-5, 4-6, 4-3, 4-11, 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15, 4-8, 4-9 ".split()
also:
Code: Alles auswählen
names_sortiert = ["4-1","4-2", .... "4-Z15", "4-16"]
Code: Alles auswählen
names = "4-1, 4-2, 4-4, 4-5, 4-6, 4-3, 4-11, 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15, 4-8, 4-9 ".split()
Code: Alles auswählen
names_sortiert = ["4-1","4-2", .... "4-Z15", "4-16"]
Code: Alles auswählen
In [480]: "4-1, 4-2, 4-4, 4-5, 4-6, 4-3, 4-11, 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15, 4-8, 4-9 ".split()
Out[480]:['4-1,',
'4-2,',
'4-4,',
'4-5,',
'4-6,',
'4-3,',
'4-11,',
'4-13,',
'4-14,',
'4-16,4-12,',
'4-10,',
'4-7,',
'4-Z15,',
'4-8,',
'4-9']
Code: Alles auswählen
import re
names = "4-1, 4-2, 4-4, 4-5, 4-6, 4-3, 4-11, 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15, 4-8, 4-9 "
print(list(map(str.strip, sorted(names.split(","), key=lambda x: int(re.search(r"-.*?(\d+)", x).group(1))))))
Code: Alles auswählen
import re
d_d_rex = re.compile(r'(\d+-\D*?)(\d+)')
def last_int(entry):
return int(entry[-1])
names = d_d_rex.findall("4-1, 4-2, 4-4, 4-5, 4-6, 4-3, 4-11, 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15, 4-8, 4-9 ")
list(map("".join, sorted(names,key=last_int)))
Bloß kein Regex Golf...
Code: Alles auswählen
names = " 4-1, 4-2, 4-4, 4-5, 4-6 , 4-3, 4-11 , 4-13, 4-14, 4-16,4-12, 4-10, 4-7, 4-Z15 , 4-8, 4--9 "
def sorted_by_second(text):
def key(value: str):
return int(value.partition("-")[2].replace("Z", ""))
splitter_stripper = map(str.strip, names.split(","))
return ",".join(
sorted(
splitter_stripper,
key=key,
)
)
print(sorted_by_second(names))
Code: Alles auswählen
def key():
"""
Eine wichtige Funktion
"""
pass
# 10_000 Zeilen Code
for key in range(10):
pass
# 100 Zeilen Code
# jetzt die Wichtige Funktion aufrufen:
key()
# TypeError: 'int' object is not callable
Code: Alles auswählen
sorted(
splitter_stripper,
key=key,
)
Code: Alles auswählen
splitter_stripper = map(str.strip, names.split(","))
Code: Alles auswählen
from string import ascii_uppercase
"B15".lstrip(ascii_uppercase)
# 15
"ZAB16".lstrrip(ascii_uppercase)
# 16
Code: Alles auswählen
leer = "anna".lstrip("na")
Code: Alles auswählen
def split_and_sort(text):
return sorted(
(name.strip() for name in names.split(",")),
key=lambda name: int(re.search(r"(\d+)$", name).group(1)),
)