2016-07-28 106 views
1

我想刪除python中字符串中所有數字之間的空格。舉例來說,如果我有刪除python中字符串中數字之間的空格

my_string = "my phone number is 12 345 6789" 

我希望它成爲

my_string = "my phone number is 123456789" 

我想我可以爲每個號碼做到這一點:

for i in range(10): 
    my_string = my_string.replace(str(i)+" ",str(i)) 

但是,這是不是一個聰明的和高效的方案。有什麼想法嗎?

回答

13

只要使用正則表達式!現在支持可變數目的空格。

import re 
my_string = "my phone number is 12 345 6789" 
my_string = re.sub(r'(\d)\s+(\d)', r'\1\2', my_string) 
+0

你能擴展到'r'(\ d)(\ s +)(\ d)',r'\ 1 \ 3''到允許多個空白? – inspectorG4dget

+1

@ inspectorG4dget它甚至需要成爲一個捕獲組嗎?難道你不能只是做'r'(\ d)\ s +(\ d)',r'\ 1 \ 2'' –

1

只是另一個正則表達式的方式,使用向後看/前進,直接剛刪除的空間,而不是也考慮了數字,並把它們放回:

>>> re.sub('(?<=\d) (?=\d)', '', my_string) 
'my phone number is 123456789' 

我喜歡它,但有要承認它有點長和慢:

>>> timeit(lambda: re.sub('(?<=\d) (?=\d)', '', my_string)) 
1.991465161754789 
>>> timeit(lambda: re.sub('(\d) (\d)', '$1$2', my_string)) 
1.82666541270698