如何使用 Python 中的正则表达式在字母数字字符串中添加三位数字?
例如,我想在破折号 -
之后添加三个零,但在字符串中的最后一个数字之前,以制作 A1-1
的方式是A1-0001
相反。
我的猜测是:
df['column'].str.replace('(^C3-\d{1)$)', ???)
最佳答案
您可以使用
df['column'] = df['column'].str.replace(r'^(C3-)(\d)$', r'\g<1>000\2')
请参阅regex demo 。如果C
可以是任何大写 ASCII 字母,将其替换为 [A-Z]
.
或者,对于 1-3 位数字来说更通用一些:
df['column'] = df['column'].str.replace(r'^(C3-)(\d{1,3})$', lambda x: "{}{}".format(x.group(1), x.group(2).zfill(4)))
详细信息
-
^
- 开始 -
(C3-)
- 第 1 组:C3-
-
(\d)
- 第 2 组:一个数字(\d{1,3}
匹配 1 到 3 个数字) -
$
- 字符串结尾 -
\g<1>
- 第 1 组的值 -
000
- 三个零 -
\2
- 第 2 组的值
Python 测试:
import pandas as pd
df = pd.DataFrame({'column': ['C3-1', 'C3-12', 'C3-123', 'C3-1234']})
df['column'] = df['column'].str.replace(r'^(C3-)(\d{1,3})$', lambda x: "{}{}".format(x.group(1), x.group(2).zfill(4)))
输出:
>>> df
column
0 C3-0001
1 C3-0012
2 C3-0123
3 C3-1234
关于python - 在 Python 中添加字母数字中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59976183/