我是一名Python初學者。 我想從字符串中找到<(。+?)>,並將其替換爲[\ 1]。 例如,如何用Python 3中的捕獲組替換一些字符串?
string_input = '<age>'
string_output = '[age]'
我試過,
import re
string = '<age>'
re.sub('<.+?>, '[' + \1 + ']', string)
但失敗了。
我是一名Python初學者。 我想從字符串中找到<(。+?)>,並將其替換爲[\ 1]。 例如,如何用Python 3中的捕獲組替換一些字符串?
string_input = '<age>'
string_output = '[age]'
我試過,
import re
string = '<age>'
re.sub('<.+?>, '[' + \1 + ']', string)
但失敗了。
>>> re.sub('<(.+)>', '[\\1]', '<age>')
'[age]'
雙\\
用來逃避\
,否則\1
將被識別爲\x01
。
括號()
被用作捕獲組。
您可以使用多個捕獲組是這樣的:
>>> re.sub('<(.+)=+(.*)>', '[\\1: \\2]', '<age=5>')
'[age: 5]'
非常感謝! – user1610952
您最佳的訪問使用\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]'
re.sub("<([^>]+)>", "[\g<1>]", s)
亞歷克斯大號說,但你不需要?字符:
import re
re.sub('<(.+)>', '[\\1]', '<age>')
建議使用\ g <>,因爲它可以避免像\ 12 \ 3這樣的歧義。 –