suchen und ersetzen.. 1000x im internet gefunden

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
danims
User
Beiträge: 29
Registriert: Montag 19. Februar 2007, 20:23
Wohnort: Bern, Schweiz

Montag 19. Februar 2007, 22:11

Hallo

ich dreh noch durch

ich möcht aus einem string, der jeweils aus einem array kommt, etwas ersetzen

folgendes habe ich 1000x im internet gefunden und funktionieren tuts nie:

mein code:

Code: Alles auswählen

...
while(a < howm):
		arr[a] = arr[a].replace("ersetzdas", "mitdem")
		a = a + 1
...
bekomme immer diesen fehler:

File "web.py", line 36, in ?
arr[a] = arr[a].replace("ersetzdas", "mitdem")
TypeError: 'NoneType' object is not callable


was stimmt da nicht? ich schnalls echt nicht mehr...
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

Montag 19. Februar 2007, 22:15

Sieht so aus, als waere das Attribut replace von arr[a] None (und demnach nicht aufrufbar), Das sagt zumindest die Fehlermeldung. Bist du sicher, dass in dem Array normale Instanzen von str bzw. unicode stehen?
Benutzeravatar
danims
User
Beiträge: 29
Registriert: Montag 19. Februar 2007, 20:23
Wohnort: Bern, Schweiz

Montag 19. Februar 2007, 22:16

wie finde ich das raus?
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

Montag 19. Februar 2007, 22:20

Ich wuerd's mit Debug-Prints machen, auch wenn das kein schoener Stil ist. Sprich, du schreibst vor die Zeile

Code: Alles auswählen

print arr[a]
print type(arr[a])
und guckst, was da steht.
Benutzeravatar
danims
User
Beiträge: 29
Registriert: Montag 19. Februar 2007, 20:23
Wohnort: Bern, Schweiz

Montag 19. Februar 2007, 22:26

Code: Alles auswählen

    while(a < howm):
    ^
SyntaxError: invalid syntax
das kam raus...

bei mir steht nun:

Code: Alles auswählen

a = 1
arr = []
	
print arr[a]
print type(arr[a])

	while(a < howm):
		arr[a] = arr[a].replace("ersetzdies", "mitdem")
		a = a + 1
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 19. Februar 2007, 22:31

Nunja, das "while" ist ohne Grund eingerückt. Das mag Python nicht, da es an der Einrückung Codeblöcke erkennt.

Übrigens: die Klammern um den while-Ausdruck sind unnötig.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

Montag 19. Februar 2007, 22:32

Wenn du einfach so 'ne weitere Einrueckungsebene einbaust, kann das auch nicht funktionieren.
Ausserdem solltest du die prints in die Schleife reinschreiben, fuer den Fall, dass nicht der erste Eintrag in der Liste der ist, der den Fehler verursacht.
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Montag 19. Februar 2007, 22:45

Unabhängig von der Einrückung verstehe ich Deinen Code nicht. Nach Zeile zwei ist arr leer und es gibt darin nichts zu ersetzen. Falls Du arr zwischenzeitlich füllst, denke daran, dass die Zählung bei arr[0] beginnt und nicht bei arr[1] !

Gruß,
Bernhard
Antworten