2016-09-02 4 views
0

Я хочу заменить ## на << и >> с чередованием. Например, abc##123##qwe##asd## - abc<<123>>qwe<<asd>>. Конечно, я могу читать символы один за другим, проверять их, заменять на <<, если это даже время или >>, если это странное время. Но в Python есть сборка стандартных функций, поэтому я задаюсь вопросом, могу ли я использовать их для сокращения моего кода.Заменить в строке чередованием

+6

're.sub (г '# # (. *?) ## ', r' <<\1>> ', s) ' –

+0

@AvinashRaj, спасибо, я должен узнать некоторые о регулярных выражениях. – Pavel

+1

Просто, чтобы указать, что ответ авинаша отлично подходит для случаев, когда вы знаете, что у вас есть даже номера '##' s, но не будут работать для нечетных/unm хешей. –

ответ

1

вы можете использовать следующее заявление изменить только пару из ## и оставить несоответствующий ## как это

d = "abc##123##qwe##asd" 
re.sub(r'(##)(.*?)(?(1)##)', r'<<\2>>', d) 

# 'abc<<123>>qwe##asd' 

или вы можете сделать это

re.sub(r'(##)(.*?)(?(1)##)', r'<<\2>>', d).replace("##","<<") 

# 'abc<<123>>qwe<<asd' 
Смежные вопросы