10

すべての二重バックスラッシュを単一のバックスラッシュに置き換えようとしています。'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    
4

4 に答える 4

2

文字列にはバックスラッシュが 1 つしかありません。

>>> string = 'class=\\"highlight' 
>>> print string
class=\"highlight

そこにもう一つ入れてみましょう

>>> string = 'class=\\\\"highlight' 
>>> print string
class=\\"highlight

その後、もう一度削除します

>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight
于 2013-05-21T15:50:54.027 に答える