stringproblem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rene04
User
Beiträge: 12
Registriert: Freitag 21. Juli 2006, 11:00

Freitag 21. Juli 2006, 11:05

hallo,

ich mag in einer datei bestimmte wörter ersetzen. also alle wörter wie web6 sollen durch web5 erstezt werden.habe dannmal folgendes gebastelt:

Code: Alles auswählen

#!/usr/bin/python2.4

import string

print 'dateioperation starten...'

myfile = open('/home/config.php', 'r+')
inhalt = myfile.read()

string.replace(inhalt, "web6", "web5")
#pos = string.find(inhalt, "../contenido/")

print inhalt

#myfile.write(inhalt)
leider tut sich da rein garnichts. was mache ich falsch??
icepacker
User
Beiträge: 49
Registriert: Dienstag 15. November 2005, 18:48

Freitag 21. Juli 2006, 11:17

Hi
Probiers mal so:

Code: Alles auswählen

#!/usr/bin/python

print 'dateioperation starten...'

myfile = open('/home/config.php', 'r+')
inhalt = myfile.read()

neuer_inhalt = inhalt.replace("web6", "web5")
#pos = string.find(inhalt, "../contenido/")

print neuer_inhalt

#myfile.write(inhalt) 
ubuntu linux !!
rene04
User
Beiträge: 12
Registriert: Freitag 21. Juli 2006, 11:00

Freitag 21. Juli 2006, 11:24

hi,

danke das haut hin.

da hab ich die replace funktion wohl falsch verstanden.
replace( str, old, new[, maxreplace])

Return a copy of string str with all occurrences of substring old replaced by new. If the optional argument maxreplace is given, the first maxreplace occurrences are replaced.
deshalb hatte ich drei parameter :(
und ne zusätzliche variable hatte ich auch net, aber jetzt erscheint mir das logisch ;)

danke

gruesse rene
icepacker
User
Beiträge: 49
Registriert: Dienstag 15. November 2005, 18:48

Freitag 21. Juli 2006, 11:36

Als Referenz empfehle ich die Online Documentation: http://docs.python.org/
Da gibts auch die aktuelle Funktionsweise von replace:
replace( old, new[, count])
Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.
Das string Modul musst du auch nicht mehr importieren, da sich (alle??)
string Verarbeitungen, als Methode des Objekts str aufrufen lassen!
ubuntu linux !!
rene04
User
Beiträge: 12
Registriert: Freitag 21. Juli 2006, 11:00

Freitag 21. Juli 2006, 11:37

noch jemand ne idee wie ich die ursprüngliche datei überschreibe anstatt dem krempel hintendrann zu hängen?

gruesse
icepacker
User
Beiträge: 49
Registriert: Dienstag 15. November 2005, 18:48

Freitag 21. Juli 2006, 11:48

Da müsstest du mit 'r+' eigentlich schon richtig liegen.
Open for reading and writing; place the file pointer at the beginning of the file.
ubuntu linux !!
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Freitag 21. Juli 2006, 11:49

Ein paar generelle Tips:

Hole dir Inhalt aus der Datei
Bearbeite den Inhalt
Schreibe den bearbeiteten Inhalt in eine neue Datei
Lösche die alte Datei und benenne die neue Datei um

So würde ich das angehen. Du kannst natürlich auch
erst aus der alten Datei lesen. Sie dann schließen und wieder
öffnen. Diesmal allerdings in einem anderen Modus. Also nicht r+
sondern w+.

prosta
Antworten