删除python中字符串中数字之间的空格

Bri*_*ian 3 python string

我想删除python中字符串中数字之间的所有空格.例如,如果我有

my_string = "my phone number is 12 345 6789"
Run Code Online (Sandbox Code Playgroud)

我希望它成为

my_string = "my phone number is 123456789"
Run Code Online (Sandbox Code Playgroud)

我想我可以为每个号码做到这一点:

for i in range(10):
   my_string = my_string.replace(str(i)+" ",str(i))
Run Code Online (Sandbox Code Playgroud)

但这不是一个聪明有效的解决方案.有什么想法吗?

Mor*_*app 16

只需使用正则表达式!现在支持可变数量的空格.

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


Ste*_*ann 9

这是另一种正则表达式方式,使用后视/前视并直接删除空格,而不是取出数字并将它们放回原处:

>>> re.sub('(?<=\d) (?=\d)', '', my_string)
'my phone number is 123456789'
Run Code Online (Sandbox Code Playgroud)

我喜欢它,但不得不承认它有点长和慢:

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