2013-06-19 17 views
17

Próbuję powtarzania ciąg w Pythonie.Powtarzanie ciągu Python

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

Wyjście

HelloHello

wymaganej wydajności

Hello Hello

Czy ktoś może wskazać mi właściwy kierunek.

wersja Pythona: 2.6.4

+0

Czy wymagana moc mają spacją po drugim 'Hello'? – jozzas

+0

@jozzas no mate.Noc kończąca się spacja po drugim cześć. – misguided

Odpowiedz

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

Mate justa szybkie zapytanie, czy to pozostawi spację po drugim ciągu? – misguided

+0

Nie, nie będzie. Łączy dwa ciągi 'Hello' z odstępem między nimi. – jozzas

+0

@misguided, nie pozostawi spacji po drugim ciągu znaków. –

6

Wykonaj:

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

że będzie reklama spacji po drugie "Hello", czy to w porządku. Również, jak powiedział rajpy, nie powinieneś używać str jako zmiennej, ponieważ jest to słowo kluczowe w pythonie.

Bo wtedy dostajesz przestrzeń pomiędzy dwoma słowami i umieszczenie go w między komentarzy na

że powinno działać!

P.S nie potrzebne #!/bin/python

1

Spróbuj tego:

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

Jeśli chcesz określić miejsce spływu wyraźnie.

W przykładzie, można zrobić:

print str[:6] * 2 

Proszę nie używać wbudowanych typów (str, int itp ..) jak zmiennych w programie, to cienie jego rzeczywisty sens.

+0

Dzięki za podpowiedź. Będę o tym pamiętać. Również twoje pierwsze rozwiązanie pozostawia miejsce po wydrukowaniu Cześć po raz drugi? – misguided

+0

Tak, to by było. Użyj rozwiązania neurontowego, jego lepszego. – rajpy

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

Oto alternatywne rozwiązanie, wykorzystując ciąg formatowanie z wielokrotnym index:

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

To będzie działać dobrze, jeśli wiemy z wyprzedzeniem, jak chcesz, aby powtórzyć swój ciąg. Jeśli chcesz, aby liczba powtórzeń była zmienna w czasie wykonywania, użycie str.join, jak w odpowiedzi nuront jest prawdopodobnie lepsze.

Zaletą korzystania z formatowania ciągów jest to, że nie jesteś ograniczony tylko do powtórzeń, ale możesz to zrobić z łatwością. Można też zrobić inne zdobienia w okolicach napisu, jeśli chcesz (i kopie nie muszą być traktowane tak samo):

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

To drukuje repr pierwszego kopia napisu wewnątrz nawiasów kwadratowych, po których następuje druga kopia w nawiasach, wyśrodkowana i dopełniona podkreśleniami o szerokości 15 znaków.

+0

Bardzo interesujące. Szczególnie druga część :) – misguided

2

W przypadku, jeśli chcesz po prostu powtórzyć dowolny ciąg znaków „Hello World” * 2