Регулярное выражение Python для замены двойной обратной косой черты одним обратным слэшем

Я пытаюсь заменить все двойные обратные косые черты только одним обратным слэшем. Я хочу заменить 'class = \\ "highlight" на' class = \ "highlight '. Я думал, что python рассматривает «\\» как одну обратную косую черту и r '\\ +' как строку с двумя обратными косыми чертами (это 3 и 4 обратных слэша с SO escaping). Но когда я пытаюсь

In [5]: re.sub(r'\\+', '\\', string) sre_constants.error: bogus escape (end of line) 

Поэтому я попытался переключить строку replace на необработанную строку:

  • Использование RegEx для соответствия IP-адресам в Python
  • регулярное выражение python: получить конечные цифры из строки
  • повторение нескольких символов regex
  • Различное поведение между re.finditer и re.findall
  • Число фильтров Regex делится на 3
  • Регулярное выражение Python должно разделять пробелы, кроме как между кавычками
  •  In [6]: re.sub(r'\\+', r'\\', string) Out [6]: 'class=\\"highlight' 

    Это не то, что мне нужно. Поэтому я попробовал только одну обратную косую черту в исходной строке:

     In [7]: re.sub(r'\\+', r'\', string) SyntaxError: EOL while scanning string literal 

  • Как сделать шахматную доску в numpy?
  • Python: One Try Multiple Except
  • Почему pip устанавливает matplotlib версии 0.91.1, когда PyPi показывает версию 1.0.0?
  • Анализ HTML с помощью Python 2.7 - HTMLParser, SGMLParser или Beautiful Soup?
  • Построение графика с использованием морского объекта с использованием объектно-ориентированного интерфейса matplotlib
  • Как запустить сервер ipython для ноутбука при загрузке в качестве демона
  • 2 Solutions collect form web for “Регулярное выражение Python для замены двойной обратной косой черты одним обратным слэшем”

    почему бы не использовать string.replace() ?

     >>> s = 'some \\\\ doubles' >>> print s some \\ doubles >>> print s.replace('\\\\', '\\') some \ doubles 

    Или с «сырыми» строками:

     >>> s = r'some \\ doubles' >>> print s some \\ doubles >>> print s.replace('\\\\', '\\') some \ doubles 

    Так как escape-символ сложный, вам все равно нужно избегать его, чтобы он не ускользнул от '

    У вас есть только одна обратная косая черта в строке:

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

    Теперь давайте добавим еще один

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

    и затем снова удалите его

     >>> print re.sub('\\\\\\\\', r'\\', string) class=\"highlight 
    Python - лучший язык программирования в мире.