2016-07-28 2 views
1

Мне нужно найти image_bid в строке s, и если существует необходимость заменить эту строку своим значением DEBUG, в этом случае я пробовал следующее, но не кажется, работает, может ли кто-нибудь предложить, как я могу это сделать?как искать текст в строке и заменить его значением

import re 
s = "cols/sel/Pkg/Bin/LA/${image_bid:DEBUG}/" 

match = re.search('image_bid:(\w+)',s) 
print match.group(1) 

if match: 
    final_value = s.replace('image_bid:(\w+)',match.group(1)) 
print final_value 

MY OUTPUT:- 
cols/sel/Pkg/Bin/LA/${image_bid:DEBUG}/ 

Expected output:- 
cols/sel/Pkg/Bin/LA/DEBUG 
+0

Почему вы ожидали '$ {'и'}/'исчезнуть? –

+0

Это не приемлемый путь ... – kemosabee

+0

Я просто имел в виду, что ваша реализация на самом деле не пытается их удалить. Я не был уверен, что это было преднамеренным или надзорным. –

ответ

0

Метод замены() возвращает копию строки, в которой вхождения старого были заменены новыми, возможно ограничение число замен до макс.

Это не похоже, как метод replace для строки поддержки регулярных выражений, используйте re.sub вместо:

if match: 
    final_value = re.sub(r'\${image_bid:\w+}',match.group(1), s) 
print final_value 
# cols/sel/Pkg/Bin/LA/DEBUG/ 
+0

Мне нужно, чтобы передняя косая черта '/' присутствовала как 'cols/sel/Pkg/Bin/LA/DEBUG /' – kemosabee

+0

Вы можете удалить '/' из шаблона, чтобы он не заменился. Он добавлен, потому что он не отображается в ожидаемом выпуске. – Psidom

0

Вы, вероятно, хотите что-то вроде

final_value = re.sub(r'\$\{image_bid\:(\w+)\}/', r'\1', s) 
Смежные вопросы