Совпадение только символа между двумя другими - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь заменить "/" на "-" в регулярном выражении Python, но только один между заглавными буквами и числом:

data["image_cloud"] = re.sub(r"[A-Z]+(/*)[0-9]", "-", data["image_cloud"])

С помощью этого регулярного выражения он выбирает все символы, не только "/"

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

после того, что вы говорите, правильный шаблон:

data["image_cloud"] = re.sub(r"(?<=[A-Z])/(?=\d)", "-", data["image_cloud"])

  AZ/09 will be replaced by AZ-09
  AZ09 will not be replaced

будьте осторожны, если вы используете:

data["image_cloud"] = re.sub(r"(?<=[A-Z])/*(?=\d)", "-", data["image_cloud"])

  AZ/09 will be replaced by AZ-09
  AZ09 will be replaced by AZ-09 (also)
0 голосов
/ 01 апреля 2019

Похоже, вы работаете с pandas, поэтому используйте str.replace как:

data["image_cloud"] = data["image_cloud"].str.replace(r"([A-Z])/([0-9])", r"\1-\2")

В ([A-Z])/([0-9]), ([A-Z]) - это группа захвата # 1, которая соответствует заглавной букве, а ([0-9]) - это группа захвата # 2, которая захватывает цифру, а \1 и \2 - их соответствующие обратные ссылки в шаблон замены.

Запомните префикс r, обозначающий строковый литерал raw .

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