すべての二重バックスラッシュを単一のバックスラッシュに置き換えようとしています。'class=\\"highlight'
と交換したい'class=\"highlight'
。'\\'
Python は1 つのバックスラッシュとして扱い、2 つのバックスラッシュを含む文字列として扱うと思いましたr'\\+'
。でもやってみると
In [5]: re.sub(r'\\+', '\\', string)
sre_constants.error: bogus escape (end of line)
そこで、置換文字列を生の文字列に切り替えてみました:
In [6]: re.sub(r'\\+', r'\\', string)
Out [6]: 'class=\\"highlight'
これは私が必要とするものではありません。そこで、生の文字列でバックスラッシュを 1 つだけ試しました。
In [7]: re.sub(r'\\+', r'\', string)
SyntaxError: EOL while scanning string literal