我正在使用一个脚本,该脚本使用zfill
向Python 3中的正则表达式匹配的数字添加前导零。
这是我的代码:
#!/usr/bin/env python
import re
string = "7-8"
pattern = re.compile("^(\d+)-(\d+)$")
replacement = "-{}-{}-".format(
"\\1".zfill(2),
"\\2".zfill(3)
)
result = re.sub(pattern, replacement, string)
print(result)
我期望的输出是将第一个数字的宽度填充为两个字符,将第二个数字的宽度填充为三个字符。例如:
-07-008-
相反,我得到:
-7-08-
为什么零比预期的少零?
答案 0 :(得分:2)
您正在填充用于后向引用的常量,该常量已经是两个字符(partial
和一个int),第一个字符没有多余的零,第二个字符只有一个空格。
您可以改为将函数作为替换传递给\
并在其中进行 zfilling :
re.sub
zfilling 现在是在替换时完成的,而不是像代码中那样。