2012-04-07 36 views
7

Nếu tôi có một chuỗi, ví dụ như đọc: 'Xin chào bạn hôm nay như thế nào Joe' Tôi có thể chèn khoảng trắng vào khoảng thời gian như thế nào? Vì vậy, ví dụ tôi muốn chèn không gian vào nó bằng cách sử dụng chức năng phạm vi trong các bước sau: phạm vi (0,27,2). Vì vậy, nó sẽ trông như thế này:làm cách nào để chèn khoảng trắng vào chuỗi bằng chức năng phạm vi?

"He ll o ho w ar e yo u to da y Jo e" 

Nó bây giờ có một không gian ở mọi chỉ số thứ 2 đi đến cuối. Làm thế nào để làm điều này không ai biết? cảm ơn.

+0

Tôi đoán "Hello" -> "Helo" là lỗi đánh máy chứ không phải là một phần của kết quả mong muốn? –

Trả lời

12

Cách tiếp cận hầu hết thẳng về phía trước cho trường hợp cụ thể này là

s = 'Hello how are you today Joe' 
s = " ".join(s[i:i+2] for i in range(0, len(s), 2)) 

này chia tách chuỗi thành những phần của hai nhân vật từng đầu tiên, và sau đó tham gia các khối với không gian.

+0

... Tôi đang kinh ngạc ... chỉnh sửa: đây không phải là kiểm tra xem nhân vật hiện tại có phải là không gian hay không; chuỗi kết quả có thể kết thúc với khoảng trống kép nếu ký tự hiện tại đã là một khoảng trắng. –

+1

OP có không gian kép trong ví dụ của chúng, chúng không được hiển thị vì định dạng (thiếu). –

+0

@Sven Marnach, Nếu tôi không muốn có không gian đôi thì sao? Tôi chỉ tò mò thôi. Tôi nghĩ rằng giải pháp của bạn cho câu hỏi của anh ấy là tuyệt vời. – George

0

Điều này làm mọi thứ!

>>> def insert_spaces(text, s_range): 
     return ' '.join(text[start:end] for start, end in 
         zip([0] + s_range, s_range + [len(text)])).strip() 

Câu hỏi ví dụ:

>>> insert_spaces('Hello how are you today Joe', range(0, 27, 2)) 
'He ll o ho w ar e yo u to da y Jo e' 

ví dụ khác với khác nhau starts, stepsstops:

>>> insert_spaces('Hello how are you today Joe', range(5, 20, 4)) 
'Hello how are you today Joe' 
>>> insert_spaces('Hello how are you today Joe', range(0, 27)) 
'H e l l o h o w a r e y o u t o d a y J o e' 
>>> insert_spaces('abcdefghijklmnopqrstuvwxyz', range(0, 16, 5)) 
'abcde fghij klmno pqrstuvwxyz' 
1

Chỉ cần một cách khác để làm điều đó

>>> ''.join(e if (i+1)%2 else e+" " for (i,e) in enumerate(list(s))) 
'He ll o ho w ar e yo u to da y Jo e' 
Các vấn đề liên quan