589 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?

6voto

MikeW Punkte 4714

Wenn Sie einen funktionaleren Ansatz für die Iteration über eine Zeichenkette verwenden möchten (vielleicht um sie irgendwie umzuwandeln), können Sie die Zeichenkette in Zeichen aufteilen, eine Funktion auf jedes einzelne Zeichen anwenden und dann die resultierende Liste von Zeichen wieder zu einer Zeichenkette zusammenfügen.

Eine Zeichenkette ist von Natur aus eine Liste von Zeichen, daher wird 'map' die Zeichenkette - als zweites Argument - durchlaufen und die Funktion - das erste Argument - auf jedes einzelne Zeichen anwenden.

Hier verwende ich zum Beispiel einen einfachen Lambda-Ansatz, da ich nur eine triviale Änderung des Zeichens vornehmen möchte: Hier soll jeder Zeichenwert erhöht werden:

>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'

oder allgemeiner ausgedrückt:

>>> ''.join(map(my_function, my_string))

wobei my_function einen char-Wert annimmt und einen char-Wert zurückgibt.

3voto

N6151H Punkte 130

Mehrere Antworten verwenden hier range . xrange ist in der Regel besser, da es einen Generator zurückgibt, anstatt eine vollständig instanziierte Liste. Wo Speicher und oder Iterables mit stark variierenden Längen ein Problem darstellen können, xrange überlegen ist.

2voto

Joe Ferndz Punkte 8145

Sie können auch Folgendes tun:

txt = "Hello World!"
print (*txt, sep='\n')

Dabei werden keine Schleifen verwendet, sondern die interne Druckanweisung übernimmt diese Aufgabe.

* entpackt die Zeichenkette in eine Liste und sendet sie an die Druckanweisung

sep='\n' sorgt dafür, dass das nächste Zeichen in eine neue Zeile gedruckt wird

Die Ausgabe wird sein:

H
e
l
l
o

W
o
r
l
d
!

Wenn Sie eine Schleifenanweisung benötigen, können Sie, wie bereits von anderen erwähnt, eine for-Schleife wie diese verwenden:

for x in txt: print (x)

0voto

Wenn Sie jemals in eine Situation kommen, in der Sie get the next char of the word using __next__() zu erstellen, denken Sie daran, eine string_iterator und iterieren darüber und nicht über die original string (it does not have the __next__() method)

In diesem Beispiel, wenn ich ein Zeichen finde = [ Ich suche weiter nach dem nächsten Wort und finde es nicht. ] also muss ich __next__ verwenden

hier würde eine for-Schleife über die Zeichenkette nicht helfen

myString = "'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"
processedInput = ""
word_iterator = myString.__iter__()
for idx, char in enumerate(word_iterator):
    if char == "'":
        continue

    processedInput+=char

    if char == '[':
        next_char=word_iterator.__next__()
        while(next_char != "]"):
          processedInput+=next_char
          next_char=word_iterator.__next__()
        else:
          processedInput+=next_char

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