python - 在 Python 中添加字母数字中的正则表达式

标签 python regex

如何使用 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/

相关文章:

python - 如何使用Python在Indesign中调整PDF文件的所有页面?

python - 如何从带有附加分隔符的 csv 在 python 中创建 pandas 数据框?

javascript - 至少一个数字的正则表达式

python - 在 Python 中循环遍历 .csv 文件中的列

python - 如何修复 "Can' t 连接到 Mac 上的 Browsermob-Proxy"?

python - 搜索正则表达式匹配的两个列表,如果存在则弹出

java - 负环视正则表达式 - 仅出现一次 - Java

javascript - 使用多个分隔符拆分的字符串

python - pandas read_csv 修复列以读取数据中带有换行符的数据

python - vim中的Rope自动补全(RopeCodeAssist)能不能自动插入结果?