2013-06-19 3 views
17

Ich versuche Stringwiederholung in Python.Python Wiederholungszeichenfolge

#!/bin/python 
str = 'Hello There' 
print str[:5]*2 

Ausgabe

hellohello

erforderliche Ausgabe

Hallo Hallo

Kann mir bitte jemand in die richtige Richtung zeigen.

Python-Version: 2.6.4

+0

Ist die erforderliche Ausgabe haben ein Leerzeichen nach dem zweiten 'Hello'? – jozzas

+0

@jozzas kein mate.No Leerzeichen nach dem zweiten Hallo. – misguided

Antwort

31
string = 'Hello There' 
print ' '.join([string[:5]] * 2) 
+0

Mate nur eine schnelle Abfrage, wird dies ein nachstehendes Leerzeichen nach der zweiten Zeichenfolge verlassen? – misguided

+0

Nein, wird es nicht. Es verbindet die zwei 'Hallo' Saiten mit einem Abstand zwischen ihnen. – jozzas

+0

@misguided, es wird kein nachstehendes Leerzeichen nach der zweiten Zeichenfolge übrig bleiben. –

6

tun:

str = 'Hello There' 
print str[:6]*2 

das wird ad einen Raum nach dem zweiten "Hallo", wenn das in Ordnung ist. Wie Rajpy sagte, sollten Sie nicht str als Variable verwenden, da es ein Schlüsselwort in Python ist.

Denn dann sind Sie den Raum immer zwischen den beiden Wörtern und es zwischen der hallo des

, die funktionieren sollten setzen!

P.S Sie brauchen nicht die #!/bin/python

1

Try this:

print (str[:5] + ' ') * 2 

Wenn Sie explizit Leerzeichen am Ende angeben.

In Ihrem Beispiel könnten Sie tun:

print str[:6] * 2 

Bitte verwenden Sie keine eingebauten Typen (str, int etc ..) als Variablen in Ihrem Programm, es seine eigentliche Bedeutung Schatten.

+0

Danke für den Tipp Kumpel. Behält das im Hinterkopf. Würde auch Ihre erste Lösung nach dem Drucken Hallo Platz zum zweiten Mal lassen? – misguided

+0

Ja, würde es. Verwenden Sie Neuronlösung, die bessere Lösung. – rajpy

0
import re 
str = 'Hello There' 
m = re.match("(\w+\)",str) 
m.group(1) * 2 
3

Hier ist eine alternative Lösung, string mit einer wiederholten Index Formatierung mit:

print "{0} {0}".format(s[:5]) # prints "Hello Hello" if s is "Hello World" 

Das wird gut funktionieren, wenn Sie vor der Zeit genau wissen, wie Sie Ihre Zeichenfolge wiederholen möchten. Wenn Sie möchten, dass die Anzahl der Wiederholungen zur Laufzeit variabel ist, ist die Verwendung von str.join wie in nurons Antwort wahrscheinlich besser.

Ein Vorteil der Verwendung von String-Formatierung ist, dass Sie nicht nur auf Wiederholung beschränkt sind, obwohl Sie es leicht genug tun können. Sie können auch andere tun Dekoration in und um die die Zeichenfolge, wenn Sie wollen (und die Kopien müssen nicht gleich behandelt werden):

print "[{0!r}] ({0:_^15})".format(s[:5]) # prints "['Hello'] (_____Hello_____)" 

Das druckt die repr einer ersten Kopie einer Zeichenfolge innerhalb von eckigen Klammern, gefolgt von einer zweiten Kopie in Klammern, zentriert und durch Unterstriche aufgefüllt, um 15 Zeichen breit zu sein.wenn

+0

Sehr interessant. Speziell der zweite Teil :) – misguided

2

Falls Sie nur eine beliebige Zeichenfolge wiederholen „Hallo Welt“ * 2