【发布时间】:2015-07-03 19:18:47
【问题描述】:
我有一个字符串格式,假设 A = 字母数字和 N = 整数,所以模板是“AAAAAA-NNNN”,现在用户有时会省略破折号,有时“NNNN”只有三位数,在这种情况下我需要它填充一个 0。“NNNN”的第一个数字必须是 0,因此如果它是一个数字,则它是“AAAAAA”的最后一个数字,而不是“NNNN”的第一个数字。所以本质上,如果我有以下输入,我想要以下结果:
示例输入:
"SAMPLE0001"
"SAMPL1-0002"
"SAMPL3003"
"SAMPLE-004"
期望的输出:
"SAMPLE-0001"
"SAMPL1-0002"
"SAMPL3-0003"
"SAMPLE-0004"
我知道如何使用正则表达式来检查这一点,但基本上我想做相反的事情。我想知道是否有一种简单的方法可以做到这一点,而不是对所有这些变化进行嵌套条件检查。我正在使用 python 和 pandas,但两者都足够了。
正则表达式模式是:
"[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]-\d\d\d\d"
或缩写形式:
"[a-zA-Z0-9]{6}-[\d]{4}"
【问题讨论】:
-
仅供参考...您可以像这样简化底部的正则表达式
[a-zA-Z]{6}-[\d]{4} -
上述正则表达式如何将
SAMPLE003转换为SAMPLE-0003? -
不会,这就是我要解决的问题
-
@aensm 它不会匹配第二种情况。
-
感谢 aensm 的缩写语法
标签: python regex string pandas formatting