我想删除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))
但这不是一个聪明有效的解决方案。有什么想法吗?
答案 0 :(得分:14)
只需使用正则表达式!现在支持可变数量的空格。
import re
my_string = "my phone number is 12 345 6789"
my_string = re.sub(r'(\d)\s+(\d)', r'\1\2', my_string)
答案 1 :(得分:2)
只是另一种正则表达方式,使用look-behind / ahead并直接删除空格而不是取出数字并将它们放回:
>>> 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