String ersetzen bzw. löschen

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
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Halli,
ich will einen Teil eines Textes löschen. Durch eine Recherche im Netz kam ich auf die Verwendung von string.find In meiner Software sagt er, string hat kein find. Also wieder nen Python2 Script? Dann hab ich .replace versucht. Hier wird zwar der Text ausgegeben, aber die Änderungen werden nicht übernommen.

Code: Alles auswählen

import string
text='next pattern'
text.replace("next","löschen")
print(text)
next pattern
Wo ist der Fehler bzw.was kann ich tun?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte arbeite mal ein Grundlagen Tutorial von Python durch. Du wirst nicht wirklich irgendwohin kommen, wenn du nicht ein bisschen darein investierst.

Unter anderem wird da auch erwaehnt, das Strings in Python grundsaetzlich "immutable" sind, also unveraenderlich. Solche Funktionen wie replace geben also einen *neuen* String zurueck, den man sich merken muss, wenn man ihn benutzen will. Gerne auch unter dem gleichen Namen wie bisher.

Und string.find existiert selbstverstaendlich.
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Ich lerne ja gerade. Mit Buch und Internetseiten. Aber wenn man lernt, brauch man öfter Hilfe bis man es kann ....
im Xterm zeigt er an, dass string kein Atribut find hat.

Code: Alles auswählen

fridolin@localhost ~ $ python3
Python 3.5.4 (default, Jan  6 2018, 08:35:33) 
[GCC 6.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> string.find
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'string' is not defined
>>> import string
>>> string.find
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'string' has no attribute 'find'
>>>
Ich habe es mal anders herum getestet - mit find.string Will er aber auch nicht ...
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Programmieren ist nicht raten. Da kannst du nicht einfach Namen umdrehen.

Und find ist nicht eine Funktion in einem Modul, sondern eine *Methode* auf string-Objekten. Genauso wie replace. Und das macht Sinn, denn zum finden gehoert ja nicht nur die Nadel, sondern auch der Heuhaufen.

Code: Alles auswählen

"foobarbaz".find("foo")
Antworten