Python liebt es, Ausnahmen zu machen, was normalerweise großartig ist. Aber ich bin mit einigen Strings konfrontiert, die ich verzweifelt in ganze Zahlen umwandeln möchte, indem ich Cs atoi/atof-Semantik verwende - z. atoi von "3 von 12", "3/12", "3/12", sollten alle 3 werden; atof ("3,14 Sekunden") sollte 3,14 werden; atoi ("-99 Punkte") sollte -99 werden. Python hat natürlich atoi- und atof-Funktionen, die sich nicht wie atoi und atof verhalten und genau wie Pythons eigene int- und float-Konstruktoren.Python entspricht atoi/atof
Das Beste, was ich bisher habe, die wirklich hässlich und schwer ist verfügbar für die verschiedenen Schwimmer Formate zu erweitern:
value = 1
s = str(s).strip()
if s.startswith("-"):
value = -1
s = s[1:]
elif s.startswith("+"):
s = s[1:]
try:
mul = int("".join(itertools.takewhile(str.isdigit, s)))
except (TypeError, ValueError, AttributeError):
mul = 0
return mul * value
' atoi ("was ist mit 2") 'sollte' 0' zurückgeben, da es mit einem 'w beginnt 'und' w' ist keine Ziffer. – Quuxplusone