0

XML テキストの処理に困っています。次のように、テキストから () を削除したい:

から<b>(apa-bhari(n))</b>まで<b>apa-bhari(n)</b>

以下のコードを作成しました

name= re.sub('<b>\((.+)\)</b>','<b>\1</b>',name)

しかし、これは返すことしかできません

<b></b>

エスケープ シーケンスと後方参照がわかりません。解決策を教えてください。

4

3 に答える 3

2

生の文字列を使用するか、スラッシュをエスケープする必要があります。

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>', name)
于 2011-05-15T14:01:40.283 に答える
1

数字が続く場合、Python 文字列のバックスラッシュをエスケープする必要があります。次の式はすべて true です。

assert '\1' == '\x01'
assert len('\\1') == 2
assert '\)' == '\\)'

だから、あなたのコードは

name = re.sub('<b>\\((.+)\\)</b>','<b>\\1</b>',name)

または、正規表現文字列定義を使用します。

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>',name)
于 2011-05-15T13:58:57.367 に答える
1

試す:

name= re.sub('<b>\((.+)\)</b>','<b>\\1</b>',name)

または、バックスラッシュを使用しているすべての場所で判読不能なコードを\\使用したくない場合は、手動でバックスラッシュをエスケープせずr、文字列の前に ex:r"myString\"を追加し"myString\\"ます。

于 2011-05-15T13:59:56.387 に答える