0

私はPythonの初心者です。文字列から<(。+?)>を見つけて、[\1]に置き換えたいのですが。例えば、

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

私は試した、

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

しかし、それは失敗しました。

4

4 に答える 4

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

Double\\は、をエスケープするために使用されます。\そうで\1ない場合は、として認識され\x01ます。
ブラケット()はキャプチャグループとして使用されます。

次のような複数のキャプチャグループを使用できます。

>>> re.sub('<(.+)=+(.*)>', '[\\1: \\2]', '<age=5>')
'[age: 5]'
于 2013-01-31T12:18:46.157 に答える
1

を使用してキャプチャグループにアクセスするのが最適です\g<>。したがって、キャプチャグループは1つしかないため、を使用します\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]'
于 2013-01-31T12:19:34.763 に答える
0
re.sub("<([^>]+)>", "[\g<1>]", s)
于 2013-01-31T12:20:41.610 に答える
0

アレックスLが言うように、しかしあなたは必要ありませんか?キャラクター:

import re
re.sub('<(.+)>', '[\\1]', '<age>')
于 2013-01-31T12:21:38.287 に答える