Python Fehlermeldung: string indices must be integers?
Ich bekomme diese Fehlermeldung bei folgendem Python Code:
str = '123abc'
for x in str:
if str[x].isdigit() == True:
print(str[x])
Fehlermeldung:
TypeError: string indices must be integers
in der Zeile mit print(str[x])
wie behebe ich dieses Problem?
5 Antworten
Mit "for x in str" iterierst du über jeden einzelnen Character aus dem String. x ist in dem Fall nicht eine Zahl, sondern ein String.
Du könntest mit minimalen Veränderungen das auf zwei Wege machen:
str = "123abc"
print(f"String to check: {str}\n")
print("Methode 1\n-----")
for x in str:
if x.isdigit() == True:
print(x)
print("\nMethode 1\n-----")
for x in range(len(str)):
if str[x].isdigit() == True:
print(str[x])
Naja, str ist ein String mit Inhalt '123abc'
Wenn Du da per Schleife drüber gehst, dann stehen in x die einzelnen chars (Buchstaben, Ziffern).
Dein str[x] ist ein Zugriff per Index, also Position im Array.
Du musst also dein "x" in eine Zahl umwandeln. Wie wäre es damit:
str = '123abc'
for x in str:
if x.isdigit() == True:
print(str[int(x)])
Ich kann nicht ganz erkennen was Du erreichen willst, aber das hier ist die Ausgabe:
2
3
a
Erst wird von str Index 1 ausgegeben, die '2'.
Dann wird Index 2 ausgegeben, die '3'.
Und zuletzt wird Index 3 ausgegben und das ist dann das 'a'
Gruß
str = '123abc'
for i,s in enumerate(str):
if str[i].isdigit() == True:
print(str[i])
Oder
str = '123abc'
for s in str:
if s.isdigit() == True:
print(s)
Falls du dazu noch Fragen hast, gerne nachfragen.
Das x in str[x] ist kein Integer sondern ein char.
Mit "for x in str" iteriert python über den string und in jeder Iteration ist x der nächste Buchstabe im String und nicht der Index.
In deinem Falle reicht es aus str[x] durch x zu ersetzen, da du (nehme ich mal an) ja mit str[x] das Zeichen an der Stelle lesen möchtest.
if x.isdigit() ...