#python #regex
#python #регулярное выражение
Вопрос:
Я пытаюсь заменить «/» на «-» в регулярном выражении на Python, но только символ между заглавными буквами и цифрой:
data["image_cloud"] = re.sub(r"[A-Z] (/*)[0-9]", "-", data["image_cloud"])
С помощью этого регулярного выражения выбираются все символы, а не только «/»
Комментарии:
1. Правильное регулярное выражение для использования является
(?<=[A-Z])/*(?=d)
2. Попробуйте
data["image_cloud"] = data["image_cloud"].str.replace(r"([A-Z])/([0-9])", r"1-2")
3. Если у вас есть ответ, вы должны записать его как ответ 🙂
4. @PushpeshKumarRajwanshi Большое вам спасибо, ваше решение отлично работает!
Ответ №1:
Похоже, что вы работаете с 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
префикс, который обозначает необработанный строковый литерал.
Ответ №2:
следуя тому, что вы говорите, правильный шаблон:
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)