Как вырезать на определенной части строки в Python - PullRequest
0 голосов
/ 04 октября 2019

Я ищу способ вырезать мою строку с помощью регулярного выражения, например,

, если у меня есть следующая строка

abcde.dhsjd.djshdj.(2019).(14856p).abdjskf

и я хочу получить:

 abcde dhsjd djshdj 2019

у меня уже есть следующие

    file_sub = re.sub(r'[\.()]+', ' ', file)
    split_file= re.split(r'[\d+]', file)

, когда я запускаю свой код, он обрезается до 4 цифр. вот так:

 abcde dhsjd djshdj

есть идеи как это исправить?

1 Ответ

0 голосов
/ 04 октября 2019

Использование re.sub с функцией обратного вызова:

inp = "abcde.dhsjd.djshdj.(2019).(14856p).abdjskf"
def cb(m):
    return m.group(1).replace('.', ' ') + m.group(2)

output = re.sub('^(.*?)\((\d+)\).*$', cb, inp)
print(output)

Это печатает:

abcde dhsjd djshdj 2019

Стратегия здесь состоит в том, чтобы сопоставить первую разделенную точками часть и год в двух отдельных захватахгрупп. Затем внутри функции обратного вызова мы заменяем точку пробелом и соединяем вместе.

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