575 Stimmen

Iterieren jedes Zeichens in einer Zeichenkette mit Python

In C++ kann ich eine Iteration über eine std::string wie diese:

std::string str = "Hello World!";

for (int i = 0; i < str.length(); ++i)
{
    std::cout << str[i] << std::endl;
}

Wie kann ich in Python über eine Zeichenkette iterieren?

508voto

hasen Punkte 154413

Wie Johannes schon sagte,

for c in "string":
    #do something with c

Sie können so ziemlich alles in Python iterieren, indem Sie die for loop konstruieren,

zum Beispiel, open("file.txt") gibt ein Datei-Objekt zurück (und öffnet die Datei), Iteration darüber durchläuft die Zeilen in dieser Datei

with open(filename) as f:
    for line in f:
        # do something with line

Wenn das nach Magie klingt, dann ist es das auch, aber die Idee dahinter ist ganz einfach.

Es gibt ein einfaches Iterator-Protokoll, das auf jede Art von Objekt angewendet werden kann, um die for Schleife zu bearbeiten.

Implementieren Sie einfach einen Iterator, der eine next() Methode, und implementieren eine __iter__ Methode für eine Klasse, um sie iterierbar zu machen. (Die __iter__ sollte natürlich ein Iterator-Objekt zurückgeben, d.h. ein Objekt, das die next() )

Siehe offizielle Dokumentation

345voto

moinudin Punkte 125641

Wenn Sie beim Durchlaufen der Zeichenkette Zugriff auf den Index benötigen, verwenden Sie enumerate() :

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t

95voto

Johannes Weiss Punkte 49967

Noch einfacher:

for c in "test":
    print c

40voto

Andrew Szeto Punkte 1157

Nur um eine umfassendere Antwort zu geben, kann die C-Weise der Iteration über eine Zeichenfolge in Python gelten, wenn Sie wirklich ein eckiger Pflock in ein rundes Loch zwingen wollen.

i = 0
while i < len(str):
    print str[i]
    i += 1

Aber warum sollte man das auch tun, wenn Zeichenketten von Natur aus iterierbar sind?

for i in str:
    print i

7voto

Mr. Suryaa Jha Punkte 1366

Nun, Sie können auch etwas Interessantes wie dieses tun und Ihre Arbeit mit einer for-Schleife erledigen

#suppose you have variable name
name = "Mr.Suryaa"
for index in range ( len ( name ) ):
    print ( name[index] ) #just like c and c++ 

Die Antwort lautet

M r . S u r y a a

Da range() jedoch eine Liste der Werte erstellt, die eine Sequenz ist, können Sie den Namen direkt verwenden

for e in name:
    print(e)

Dies führt ebenfalls zum gleichen Ergebnis und sieht auch besser aus und funktioniert mit jeder Sequenz wie Liste, Tupel und Wörterbuch.

Wir haben zwei eingebaute Funktionen ( BIFs in der Python-Community ) verwendet

1) range() - range() BIF wird zur Erstellung von Indizes verwendet Beispiel

for i in range ( 5 ) :
can produce 0 , 1 , 2 , 3 , 4

2) len() - len() BIF wird verwendet, um die Länge einer gegebenen Zeichenkette zu ermitteln

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X