2013-01-31 4 views
0

저는 파이썬 초보자입니다. 문자열에서 < (. +?)>을 찾고 [\ 1]로 바꾸고 싶습니다. 예를 들어 ,Python 3에서 일부 문자열을 캡처 그룹으로 바꾸는 방법은 무엇입니까?

string_input = '<age>' 
string_output = '[age]' 

나는 시도는

import re 
string = '<age>' 
re.sub('<.+?>, '[' + \1 + ']', string) 

그러나 실패했습니다. 더블 \\

+0

'\ 12 \ 3'과 같은 모호성을 피하기 위해 \ g <>를 사용하는 것이 좋습니다. –

답변

1
>>> re.sub('<(.+)>', '[\\1]', '<age>') 
'[age]' 

\을 탈출하는 데 사용됩니다, 또는 다른 \1\x01로 인식됩니다.
대괄호 ()은 캡처 그룹으로 사용됩니다.

이 같은 여러 캡처 그룹을 사용할 수 있습니다 :

>>> re.sub('<(.+)=+(.*)>', '[\\1: \\2]', '<age=5>') 
'[age: 5]' 
+0

정말 고마워요! – user1610952

1

당신은 당신이 하나 개의 캡처 그룹을 가지고 있기 때문에, 그래서 \g<>를 사용하여 캡처 그룹, 당신은 \g<1>을 최상의 액세스를 사용합니다.

In [1]: re.sub(r'<(.+?)>', '[\g<1>]', '<age>') 
Out[1]: '[age]' 
\g<>을 사용하는 이점은 당신이 또한 캡처 그룹에 이름을 지정하고, 예를 들어, 다시 이름으로 액세스 할 수 있다는 것입니다

:

In [2]: re.sub(r'<(?P<content>.+?)>', '[\g<content>]', '<age>') 
Out[2]: '[age]' 
0
re.sub("<([^>]+)>", "[\g<1>]", s) 
0

알렉스 L가 말했듯이, 하지만 너는 그럴 필요 없어? 문자 :

import re 
re.sub('<(.+)>', '[\\1]', '<age>') 
관련 문제