2013-06-19 14 views
17

Python'da dizi tekrarı deniyorum.Python dizesini tekrarla

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

Çıktı

hellohello

Gerekli Çıktı

Merhaba Merhaba

Lütfen herkes beni doğru yöne yönlendirebilir mi?

Python sürümü: 2.6.4

+0

gerekli çıkış ikinci 'Hello' sonra sonunda bir boşluk var mı herhangi bir dize tekrarlamak isterseniz? – jozzas

+0

@jozzas no mate.İkinci merhaba sonra boşluk bırakmaz. – misguided

cevap

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

Mate justa hızlı sorgulama, 2. dizeden sonra izleyen bir alan bırakacak mı? – misguided

+0

Hayır, yapmaz. Aralarındaki boşlukla iki "Hello" dizesine katılır. – jozzas

+0

@misguided, 2. dizeden sonra izleyen bir boşluk bırakmayacak. –

6

yapın:

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

bundan sonra reklam bir boşluk olacak ikinci "Merhaba" Bunda sorun yok eğer. Ayrıca, rajpy, python'daki bir anahtar kelimesi olduğundan str değişkenini bir değişken olarak kullanmamanız gerektiğini söyledi.

Çünkü o zaman iki kelime arasında boşluk alıyoruz ve aradaki koyarak merhaba en

çalışması gerektiğini!

P.S. Eğer #!/bin/python

1

bu deneyin gerekmez:

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

açıkça yer sondaki belirtmek istiyorum. Örnekte

, bunu yapabilirsiniz:

print str[:6] * 2 

yerleşik programınızda değişkenler olarak türleriyle (str, .. vb int), onun gerçek anlamını gölgeler lütfen kullanmayın.

+0

İpucu arkadaş için teşekkürler. Bunu akılda tutacak. Ayrıca, ilk çözümünüz ikinci kez Hello'ı yazdırdıktan sonra da alan bırakacak mı? – misguided

+0

Ya, olur. Neuront çözümü kullanın, daha iyi olanı. – rajpy

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

İşte tekrarlanan indeksi biçimlendirme dize kullanarak, alternatif bir çözüm:

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

size dize tekrarlamak istiyorum tam olarak nasıl önceden bilmek, bu iyi çalışacaktır. Tekrarlama sayısının çalışma zamanında değişken olmasını istiyorsanız, nuront'un yanıtında olduğu gibi str.join kullanmak muhtemelen daha iyidir.

Dize biçimlendirmesini kullanmanın bir avantajı, sadece tekrarlama ile sınırlı olmamanızdır, ancak bunu kolayca yapabilirsiniz. İsterseniz de ve dize etrafında dekorasyon diğer yapabiliriz, (ve kopyaları aynı tedavi edilmesi gerekmez):

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

içinde bir dize ilk kopyanın repr yazdırır O köşeli parantezler, ardından parantez içinde ikinci bir kopya, ortalanmış ve 15 karakter genişliğinde alt çizgilerle doldurulmuştur.durumda

+0

Çok ilginç. Özellikle ikinci bölüm :) – misguided

2

sadece "Merhaba dünya" * 2