gpt4 book ai didi

Python 正则表达式中 z 补一

转载 作者:行者123 更新时间:2023-12-01 01:39:33 24 4
gpt4 key购买 nike

我正在编写一个使用 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-

为什么零比预期少了一个?

最佳答案

zfilling用于反向引用的常量已经是两个字符(\和一个int),没有为额外的零留下空间第一个字符,第二个字符只有一个空格。

您可以将一个函数作为替换传递给 re.sub 并在其中执行 zfilling:

def repl_fn(m):
return f'-{m.group(1).zfill(2)}-{m.group(2).zfill(3)}-'

result = re.sub(pattern, repl_fn, string)
print(result)
# -07-008-

zfilling 现在是在替换时完成的,而不是像您的代码中那样之前完成。

关于Python 正则表达式中 z 补一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com