HOWTO · Python
N-malige Wiederholung von Zeichenketten in Python
Erfahren Sie, wie Sie eine Zeichenkette in Python eine feste Anzahl von Malen wiederholen und wie Sie eine Zeichenkette bis zu einer bestimmten Zeichenlänge aufbauen.
Auf dieser Seite
In Python lässt sich eine Zeichenkette mit einer Ganzzahl multiplizieren, um sie eine feste Anzahl von Malen vollständig zu wiederholen. Soll die Zeichenkette eine bestimmte Ziellänge erreichen, wiederholt man sie oft genug und schneidet das Ergebnis anschließend zu. Die beiden Ansätze erfüllen unterschiedliche Anforderungen: Beim ersten bleiben alle Wiederholungen vollständig, beim zweiten kann die letzte Wiederholung unvollständig sein.
Eine Zeichenkette in Python mit dem *-Operator N-mal wiederholen
Verwenden Sie den *-Operator, wenn Sie wissen, wie viele vollständige Kopien Sie benötigen. Das Ergebnis ist eine neue Zeichenkette, in der der ursprüngliche Text hintereinandersteht. Hier ein einfaches Beispiel:
print("ha" * 3)
hahaha
Die Ausgabe lautet hahaha. Bei der Multiplikation mit 0 entsteht eine leere Zeichenkette. Auch eine negative Wiederholungszahl ergibt eine leere Zeichenkette. Wenn Ihre Anwendung solche Eingaben ablehnen soll, prüfen Sie die Anzahl vor der Multiplikation. Die Anzahl muss eine Ganzzahl sein.
Wenn zwischen den Kopien ein Trennzeichen stehen soll, rufen Sie join() für eine wiederholte Sequenz auf. Zum Beispiel fügt ", ".join(["ha"] * 3) zwischen die Kopien ein Komma und ein Leerzeichen ein und ergibt ha, ha, ha. Das Trennzeichen steht zwischen den Elementen; der *-Operator allein reiht die Kopien direkt aneinander. Für die übliche Aufgabe, eine Zeichenkette eine feste Anzahl von Malen zu wiederholen, ist die Zeichenkettenmultiplikation die klarste Lösung.
Eine Zeichenkette in Python auf eine bestimmte Länge wiederholen
Bei einer Aufgabe mit Ziellänge kann die letzte Kopie unvollständig sein. Wiederholen Sie die Ausgangszeichenkette oft genug und schneiden Sie das Ergebnis dann auf die gewünschte Zeichenanzahl zu. Diese Hilfsfunktion weist eine negative Ziellänge zurück und meldet, dass sich eine positive Länge nicht aus einer leeren Ausgangszeichenkette bilden lässt:
def repeat_to_length(text, target_length):
if target_length < 0:
raise ValueError("target_length must be nonnegative")
if not text and target_length > 0:
raise ValueError("text must not be empty for a positive target length")
if target_length == 0:
return ""
copies = (target_length + len(text) - 1) // len(text)
return (text * copies)[:target_length]
result = repeat_to_length("abc", 8)
print(result)
abcabcab
Für die gezeigten Eingaben lautet die Ausgabe abcabcab: zwei vollständige Kopien und die ersten beiden Zeichen der nächsten Kopie. Der Ausdruck für die Aufrundungsdivision berechnet die benötigte Anzahl an Kopien; durch das Zuschneiden wird die gewünschte Länge genau eingehalten.
Bei einer Ziellänge von 0 wird eine leere Zeichenkette zurückgegeben. Eine leere Ausgangszeichenkette kann nur eine Ziellänge von 0 ergeben; bei einem positiven Ziel löst die Hilfsfunktion ValueError aus. Auch bei einer negativen Ziellänge löst sie ValueError aus, damit Aufrufer nicht unbemerkt ein irreführendes Ergebnis erhalten. Wenn Ihre Anwendung eine andere Regelung benötigt, passen Sie diese Prüfungen vor der Verwendung der Hilfsfunktion an.