Skip to main content
 首页 » 编程设计

python之用于转换的正则表达式(不使用多个语句)

2024年08月19日51emanlee

使用 Regex 提取一个语句并将其转换为另一个语句的最佳方法是什么?

具体来说,我已经实现了下面的代码,从一段文本中查找并提取一个连续数字,并将其转换如下:AB123CD 到 AB-123-CD

现在,这是通过以下 3 个语句实现的:

gg['student_num'] = gg['student_test'].str.extract('(\d{2})\w{3}\d{2}') + \ 
                    '-' + gg['student_num'].str.extract('\d{2}(\w{3})\d{2}') + \ 
                    '-' + gg['student_test'].str.extract('\d{2}\w{3}(\d{2})') 

我觉得我需要三个陈述是不对的 - 每个组一个 - 在下面连接在一起(如果更复杂,甚至更多),想知道是否有更好的方法来查找和转换一些文本?

请您参考如下方法:

您可以使用正则表达式获取段列表,然后以这种方式加入它们:

'-'.join(re.search(r'(\d{2})(\w{3})(\d{2})', string).groups()) 

如果 string 不包含所需的模式,您可能会得到 AttributeError(re.search() 返回 None),因此您可能希望将此表达式包装在 try...except block 中。