通过在正则表达式中添加一些内容来修改正则表达式

时间:2019-05-28 09:01:33

标签: python regex pandas

我正在尝试使用replace修改我的正则表达式。最终要做的是在现有模式的前面添加 01 / 。 这是我在用replace做的事情:

 df['found_d'].str.replace(pattern2, '1/'+pattern2)
 #must be str, not _sre.SRE_Pattern

我想使用 sub ,它需要3个参数,目前我不太确定如何使用它。 这是预期的输入:

 df['found_d']= 01/07/91 or 01/07/1991

我需要在模式中添加一个缺少的日期。

2 个答案:

答案 0 :(得分:0)

从版本0.20开始,熊猫str.replace可以接受将收到匹配对象的可调用对象。例如,如果一列的模式为2个大写字母,后跟2个十进制数字,并且您想用冒号将它们反转,则可以使用:

df['col'] = df['col'].str.replace(r'([A-Z]{2})([0-9]{2})',
                                  lamdba m: "{}:{}".format(m.group(2), m.group(1)))

它为您提供了熊猫内部re模块的全部功能,在这里'AB12''12:AB'

答案 1 :(得分:0)

不需要可调用对象,short_name = serializers.SerializerMethodField() [...] def get_short_name(self, obj): return obj.library_book_relation 提供了专用的方法来在替换期间访问匹配的文本。

为了将文字re附加到模式匹配项,请在替换模式中对整个模式使用01/明确的反向引用,而不要使用正则表达式模式:

\g<0>