Как заменить символ между двумя цифрами, используя re в Python? - PullRequest
3 голосов
/ 08 июля 2019

Я хочу работать с набором строковых данных и заменить '-' на '.'У меня есть этот набор данных:

AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0

Я хочу заменить '-' на '.'поэтому все вхождения с номером-номером ** должны быть заменены на number.number **

Я попытался добавить следующий шаблон регулярных выражений, но он заменяет '-' алфавита * - также

[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]

Мне нужен шаблон, в котором независимо от того, что строка представляет собой «-» между двумя цифрами, ее следует заменить на «.»

1 Ответ

6 голосов
/ 08 июля 2019

Мы можем использовать lookaround constructs [регулярные-выражения.info] для этого:

from re import compile as recompile

rgx = recompile(<b>r'(?<=\d)[-](?=\d)'</b>)

для этого rgx, мы можем затем заменить как:

>>> rgx.sub('.', 'AUDI XXX-R 2-0TS AUDI XXX-R 2-0T AUDI X-R 2-0')
'AUDI XXX-R 2.0TS AUDI XXX-R 2.0T AUDI X-R 2.0'

Если цифра справа является необязательной, мы можем просто опустить ее, например:

rgx = recompile(<b>r'(?<=\d)[-]'</b>)

Таким образом, 3-A также будет заменен на 3.A.

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