__blackjack__ hat geschrieben: Freitag 5. April 2019, 16:14
@Jankie: Wenn Du das `re`-Modul in der Lösung verwendest, dann ist das jetzt aber sehr umständlich gelöst, denn es gibt ja auch `re.sub()` wo man als zweites Argument eine Funktion übergeben kann, die das Match-Objekt übergeben bekommt und mit der Information dann die Zeichenkette durch die der Match ersetzt werden soll berechnen kann.
Auch bei der gezeigten Lösung ist es unnötig kompliziert `liste_alle_zahlen` zu erstellen, wenn man sowieso nur die erste braucht. Da würde ein `re.search()` reichen. Und den aufgespaltenen `text` bräuchte man dann auch nicht mehr, denn so ein Match-Objekt weiss ja auch an welchem Index es auf den `text` passt.
Was soll das mit ',' und '.'? Hast Du mal ausprobiert was passiert wenn so ein Treffer vor einem ohne im `text` vorkommt?
Ausserdem wäre es vielleicht wünschenswert wenn der Code auch mit dem Fall sinnvoll umgehen könnte das *keine* Ziffernfolge im `text` vorkommt.
Wenn Du das in eine Funktion verpackst, wäre es zudem einfacher den Ansatz mal mit mehr als einem Testfall auszuprobieren.
Hey,
ich bekomme das leider so nicht hin wie du das meinst, könntest du mir das vielleicht zeigen wenn du Zeit dazu hast?
Bekomme bis jetzt nur das hin:
Code: Alles auswählen
import re
input = "text mit zahl 1 und auch ne 12 und ne 14"
def replace(match):
new_number = int(match) + 1
return str(new_number)
first_number = re.search('\d+', input).group()
new_string = re.sub(first_number, replace(first_number), input)
print(new_string)
input: "text mit zahl 1 und auch ne 12 und ne 14"
output: "text mit zahl 2 und auch ne 22 und ne 24"
input: "text mit zahl 12 und auch ne 13 und ne 14""
output: "text mit zahl 13 und auch ne 13 und ne 14"
habe es doch hin bekommen (glaube ich):
Code: Alles auswählen
import re
input = "text mit zahl 1556 und auch ne 1556 und ne 14"
def replace(match):
new_number = int(match) + 1
return str(new_number)
first_number = re.search('\d+', input).group()
new_string = re.sub(first_number, replace(first_number), input, count=1)
print(new_string)
input: "text mit zahl 1556 und auch ne 1556 und ne 14"
output: "text mit zahl 1557 und auch ne 1556 und ne 14"