2013-06-19 43 views
17

Tôi đang thử lặp lại chuỗi trong Python.Chuỗi lặp lại Python

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

Output

HelloHello

Output buộc

Hello Hello

Có ai vui lòng chỉ cho tôi đúng hướng không.

Python phiên bản: 2.6.4

+0

Đầu ra yêu cầu có dấu cách sau 'Hello' thứ hai không? – jozzas

+0

@jozzas no mate.No dấu cách sau dấu hai giây. – misguided

Trả lời

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

Mate justa truy vấn nhanh, điều này sẽ để lại một dấu cách sau chuỗi thứ 2? – misguided

+0

Không, nó sẽ không. Nó nối hai chuỗi 'Hello' với khoảng cách giữa chúng. – jozzas

+0

@misguided, nó sẽ không để lại dấu cách sau chuỗi thứ hai. –

6

Làm điều này:

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

rằng sẽ quảng cáo một không gian sau khi thứ hai "Hello" nếu đó là ok. Ngoài ra, như rajpy cho biết bạn không nên sử dụng str làm biến vì từ khóa của nó trong python.

Vì sau đó bạn sẽ nhận được khoảng trống giữa hai từ và đặt nó ở giữa các số

của Hello!

Tái bút: bạn không cần #!/bin/python

1

Hãy thử điều này:

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

Nếu bạn muốn xác định dấu không gian một cách rõ ràng.

Trong ví dụ của bạn, bạn có thể làm:

print str[:6] * 2 

Xin đừng sử dụng built-in các loại (str, int vv ..) như các biến trong chương trình của bạn, nó bóng tối ý nghĩa thực tế của nó.

+0

Cảm ơn người bạn đời. Sẽ ghi nhớ điều đó. Ngoài ra giải pháp đầu tiên của bạn sẽ rời khỏi không gian sau khi in Xin chào lần thứ hai? – misguided

+0

Ya, nó sẽ. Sử dụng giải pháp neuront, nó tốt hơn. – rajpy

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

Dưới đây là một giải pháp thay thế, sử dụng chuỗi định dạng với một chỉ số lặp đi lặp lại:

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

này sẽ làm việc tốt nếu bạn biết trước thời hạn chính xác như bạn muốn lặp lại chuỗi của bạn. Nếu bạn muốn số lần lặp lại biến tại thời gian chạy, sử dụng str.join như trong câu trả lời của nuront có lẽ là tốt hơn.

Lợi thế của việc sử dụng định dạng chuỗi là bạn không bị giới hạn chỉ để lặp lại, mặc dù bạn có thể làm điều đó một cách dễ dàng đủ. Bạn cũng có thể làm khác trang trí trong và xung quanh chuỗi, nếu bạn muốn (và các bản sao không cần phải được đối xử như nhau):

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

Đó in các repr của một bản sao đầu tiên của một chuỗi bên trong các dấu ngoặc vuông, tiếp theo là một bản sao thứ hai trong dấu ngoặc đơn, được căn giữa và được đệm bằng dấu gạch dưới rộng 15 ký tự.

+0

Rất thú vị. Đặc biệt phần thứ hai :) – misguided

2

Trong trường hợp nếu bạn muốn lặp lại bất kỳ chuỗi nào "Xin chào thế giới" * 2

Các vấn đề liên quan