2015-10-06 59 views
1

鑑於我想在字符串中的每個第三個字符後面插入一個空格,除了最後一個之後。正則表達式插入空格每第三個字符,除了在行末

這是多遠我得到:

re.sub('(.{3})','\\1 ',i) 

但我沒有找到一個優雅的方式來跳過最後插入,對於情況len(i)%3=0

有什麼想法?

re.sub('(.{3})$-','\\1 ',i) 

根本沒有幫助。

感謝

回答

2

使用negative lookahead檢查比賽是不是在字符串的結尾:

In [2]: s = "abcdefghi" 

In [3]: re.sub(r'(.{3})(?!$)','\\1 ', s) 
Out[3]: 'abc def ghi' 

您可以用非正則表達式選項通過分割字符串還繼續和加入切片部分:

In [4]: " ".join(s[i: i + 3] for i in range(0, len(s), 3)) 
Out[4]: 'abc def ghi' 
+0

謝謝!第一個建議正是我一直在尋找的。 – szeta

相關問題