Hallo,
ich komme bei folgendem Problem nicht weiter:
ich lesen aus einer Datei folgenden Zeile ein
section_d_xx.key
Ich möche nun dass dieser string geteilt wird, am besten so dass section, d, xx alleine stehen, so dass ich xx durch eine mir
beliebige Zahl ersetzen kann.
Ich habe es mit der .split() Funktion versucht, hat aber nicht funktioniert.
Hat jemand von euch einen Idee??
string splitten
Ähm, ".split('_')" ?
Was genau hat denn nicht funktioniert?
Aber beim ersetzen, musst du doch nur die Werte zusammenfügen und nicht auseinander nehmen.
Was genau hat denn nicht funktioniert?
Aber beim ersetzen, musst du doch nur die Werte zusammenfügen und nicht auseinander nehmen.
Zuletzt geändert von Xynon1 am Dienstag 10. Mai 2011, 08:15, insgesamt 1-mal geändert.
Hallo,
ja danke für die schnelle Antwort:
also ich hab das ganze neu durchdacht und sieht so aus:
Also was ich machen möchte, ist aus dem DYN file bestimmte Werte ändern, in diesem Falle die xx. Jedoch nicht nur mit einem Wert, hier 10 sondern endlich vielen, die ich dann später aus der konsole übergeben möchte, dafür hab ich mal bis jetzt die Varibable h.
Diese kann ich aber nicht in die .replace funktion packen, da motzt python.
Gibt's da ne möglichkeit die Variable in diese Funktion reinzupacken??
ja danke für die schnelle Antwort:
also ich hab das ganze neu durchdacht und sieht so aus:
Code: Alles auswählen
infile = "VARIANTE_III_uebung.DYN"
h = 10
infile = open(infile)
lines = infile.read().split()
print lines
material = lines[0]
print material.replace("xx","10")
Diese kann ich aber nicht in die .replace funktion packen, da motzt python.
Gibt's da ne möglichkeit die Variable in diese Funktion reinzupacken??
Ich glaube, dass man hier doch besser mit 're' arbeitet, immerhin müsste man '.split()' 3 x anwenden, um '_', '-' und '.' auszufiltern.
Ich würde machen. Allerdings erhalte ich dannWoher stammen die '', insbesondere das letzte?
mutetella
Ich würde
Code: Alles auswählen
re.findall('([a-zA-Z0-9]*)', test)
Code: Alles auswählen
['section', '', 'd', '', 'xx', '', 'key', '']
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
Was heißt, python motzt? Was sagt Dir die Fehlermeldung denn? Ich denke mal, dass Du versuchst, einen Teil aus einem string durch einen integer zu ersetzen.
Das kann natürlich nicht gehen...
mutetella
Das kann natürlich nicht gehen...
Code: Alles auswählen
In [131]: test = 'foo bar xx'
In [132]: test.replace('xx', 10)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: expected a character buffer object
In [133]: test.replace('xx', str(10))
Out[133]: 'foo bar 10'
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
@mutetella: Dein Muster passt auch auf 0 Buchstaben/Ziffern, also die leere Zeichenkette. Und am Ende (und zwischen den anderen Treffern) stehen auch leere Zeichenketten. Mach aus dem '*' ein '+' und das Ergebnis sieht vielleicht schöner aus.
@recnice: Wenn Python "motzt" will es Dir etwas sagen was Du verstehen solltest. Und sage bitte auch immer was genau der Fehler ist, damit wir nicht raten müssen.
Deine Namenswahl ist nicht immer so besonders. `infile` ist keine Datei sondern ein Datei*name* und `lines` enthält nach einem `split()` sicher keine Zeilen.
@recnice: Wenn Python "motzt" will es Dir etwas sagen was Du verstehen solltest. Und sage bitte auch immer was genau der Fehler ist, damit wir nicht raten müssen.
Deine Namenswahl ist nicht immer so besonders. `infile` ist keine Datei sondern ein Datei*name* und `lines` enthält nach einem `split()` sicher keine Zeilen.