Изменение регулярного выражения другим путем добавления чего-либо к нему - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь изменить выражение регулярного выражения с помощью замены. В конечном итоге я хочу добавить 01 / перед моим существующим шаблоном. Это буквально замена шаблона другим. Вот что я делаю с заменой:

 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 голосов
/ 28 мая 2019

Нет необходимости в вызовах, re предоставляет специальные средства для доступа к сопоставленному тексту во время замены.

Чтобы добавить литерал 01/ к сопоставлению с шаблоном, используйте \g<0> однозначную обратную ссылку на весь шаблон в шаблоне замены вместо использования шаблона регулярного выражения:

df['found_d'] = df['found_d'].str.replace(pattern2, r'01/\g<0>')
                                                    ^^^^^^^^^^^
0 голосов
/ 28 мая 2019

Начиная с версии 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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...