2012-04-07 23 views
7

如果我有一個字符串,例如:'你好,今天你好嗎'我怎麼能夠定期插入空格?因此,例如我想在這些步驟中使用範圍函數向它中插入空格:range(0,27,2)。所以它看起來是這樣的:如何將空格插入到使用範圍函數的字符串中?

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

它現在在每個第二個索引處都有一個空格,直到它結束。我怎麼做這個有人知道嗎?謝謝。

+0

我猜「你好」 - >「Helo」是一個錯字,而不是所需結果的一部分? – 2012-04-07 15:23:14

回答

12

對於這種特殊情況下,最直接的方法是

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

這分裂串入的兩個字符塊的每個第一次,然後用空格加入這些塊。

+0

...我很敬畏...編輯:這不是做一個檢查,看看當前的字符是否是一個空格;如果當前字符已經是空格,結果字符串可能會以雙空格結束。 – 2012-04-07 15:19:19

+1

OP在他們的例子中有兩個空格,他們只是因爲(缺少)格式而不可見。 – 2012-04-07 15:21:58

+0

@Sven Marnach,如果我不想要雙倍的空間呢?我只是好奇。我認爲你的問題解決方案非常棒。 – George 2012-04-07 15:25:43

0

這是一切!

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

的問題例如:

>>> 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' 

不同startsstepsstops其他例子:

>>> 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

只是另一種方式來做到這一點

>>> ''.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' 
相關問題