Skip to main content
 首页 » 编程设计

python之使用正则表达式子在字符串中添加空格

2025年05月04日18jillzhang

我有一个字符串,我想将其拆分为 2 位数的片段。我试过像这样使用正则表达式:

import re 
s = "123456789" 
t = re.sub('..', ".. ", s) 
print(t) 

我希望得到 12 34 56 78 9 但我却得到了 '.. .. .. .. 9'。 9 不会打扰我,因为我知道我会有偶数个数字,但是我怎么能告诉 re.sub 不要用点?

使用 python shell 3.5.1

编辑

检查了所有 3 个答案,它们都有效,但 findall 似乎更快(并且更优雅的 IMO ;p ):

import time 
import re 
 
s = "43256711233214432" 
 
i = 10000 
start = time.time() 
while i: 
    i -= 1 
    re.sub('(..)', r"\1 ", s)     
end = time.time() 
 
elapsed = end - start 
print("using r\"\\1 \"    : ", elapsed) 
 
i = 10000 
start = time.time() 
while i: 
    re.sub('..', r"\g<0> ", s) 
    i -= 1 
end = time.time() 
 
elapsed = end - start 
print("using r\"\g<0> \" : ", elapsed) 
 
i = 10000 
start = time.time() 
while i: 
    ' '.join(re.findall(r'..|.', s)) 
    i -= 1 
end = time.time() 
 
elapsed = end - start 
print("using findall   : ", elapsed) 

using r"\1 " : 0.25461769104003906

using r"\g<0> " : 0.09374403953552246

using findall : 0.015610456466674805

第二次编辑:没有正则表达式是否有更好的方法(或任何方法...)?

请您参考如下方法:

你也可以使用re.findall,

>>> s = "123456789" 
>>> ' '.join(re.findall(r'..|.', s)) 
'12 34 56 78 9' 
>>>  

r'..|.' 正则表达式匹配两个字符或单个字符(优先选择 ..,然后是 .)