首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python用正则表达式中的1进行填充

Python用正则表达式中的1进行填充
EN

Stack Overflow用户
提问于 2018-08-27 19:42:49
回答 1查看 323关注 0票数 1

我正在编写一个脚本,该脚本使用zfill向Python3中的正则表达式匹配的数字添加前导零。

这是我的密码:

代码语言:javascript
复制
#!/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)

我期望的输出是将第一个数字填充到宽度中的两个字符,将第二个数字填充到三个字符。例如:

代码语言:javascript
复制
-07-008-

相反,我得到了:

代码语言:javascript
复制
-7-08-

为什么比预期少一个零?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 19:46:57

您正在填充用于回引用的常量,这些常量已经是两个字符(\和int),对于第一个字符没有留下额外的零空间,对于第二个字符只留下一个空格。

相反,您可以将一个函数作为您的替代传递给re.sub,并在其中执行z填充:

代码语言:javascript
复制
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-

现在在替换时,而不是像在代码中那样,在替换之前完成z填充。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52046025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档