L^2 M T^-1 到 L^2.M.T^-1 . 只有在两个单词字符之间,点才替换空格(\s)。例如,如果字符串为“lbf/s”,则不会应用替换。
L^2 M T^-1
L^2.M.T^-1
str1= 'L^2 M T^-1' pattern = re.compile(r'(\w+\s\w+)+') def pattern_match2(m): me = m.group(0).replace(' ', '.') return me pattern.sub(pattern_match2, str1) # this produces L2.MT-1
re.sub 直接而不是找到匹配然后使用 str.replace \b \w 自从 \w型 [a-zA-Z0-9_] ,而 以更聪明的方式封装它(本质上它相当于 (^\w|\w$|\W\w|\w\W) )
re.sub
str.replace
\b
\w
\w型
[a-zA-Z0-9_]
(^\w|\w$|\W\w|\w\W)
import re print(re.sub(r'\b(\s)\b', '.', 'L^2 M T^-1')) # L^2.M.T^-1 print(re.sub(r'\b(\s)\b', '.', 'lbf / s')) # lbf / s