Как заменить двойную обратную косую черту на одну обратную косую черту в python?

У меня есть строка. В этой строке есть двойная обратная косая черта. Я хочу заменить двойную обратную косую черту одиночными обратными косыми чертами, так что коды юникода могут быть проанализированы правильно.

(Pdb) p fetched_page '<p style="text-align:center;" align="center"><strong><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0<\\/span><\\/strong><\\/p>\n<p><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0 in \\u201cDreaming in Code\\u201d give a brief description of programming in its early years and how and why programmers are still struggling today...' 

Внутри этой строки вы можете увидеть экранированные коды юникода, например:

 \\u201c 

Я хочу превратить это в:

 \u201c 

Попытка 1:

 fetched_page.replace('\\\\', '\\') 

но это не работает – он ищет четырехкратную обратную косую черту.

Попытка 2:

 fetched_page.replace('\\', '\') 

Но это приводит к ошибке конца строки.

Попытка 3:

 fetched_page.decode('string_escape') 

Но это не повлияло на текст. Все двойные обратные косые черты остались в виде двойной обратной косой черты.

  • скрипинг экрана с использованием Ghost.py
  • Переопределение декоратора во время модульного теста на питоне
  • Найти и заменить текст в файле .docx - Python
  • Как Pretty Печать CSV-файла в Python
  • вычесть два раза в python
  • Как написать пользовательский декоратор в django?
  • Оптимизация поиска и замены больших файлов в Python
  • Как правильно управлять памятью с помощью ZODB?
  • 5 Solutions collect form web for “Как заменить двойную обратную косую черту на одну обратную косую черту в python?”

    Вы можете попробовать codecs.escape_decode , это должно декодировать escape-последовательности.

    Я не получаю описанное вами поведение:

     >>> x = "\\\\\\\\" >>> print x \\\\ >>> y = x.replace('\\\\', '\\') >>> print y \\ 

    Когда вы видите '\\\\' в своем выходе, вы видите в два раза больше косых черт, как в строке, потому что каждый из них экранирован. Код, который вы написали, должен работать нормально. Попробуйте print фактические значения, вместо того, чтобы смотреть только на то, как их отображает REPL.

    Чтобы продлить ответ Джереми, ваша проблема заключается в том, что '\' является незаконной строкой, потому что \' избегает отметки кавычки, поэтому ваша строка никогда не заканчивается.

    Это может быть немного перебор, но …

     >>> import re >>> a = '\\u201c\\u3012' >>> re.sub(r'\\u[0-9a-fA-F]{4}', lambda x:eval('"' + x.group() + '"'), a) '“〒' 

    Итак, самое простое решение будет отвечать на ms4py, вызывая codecs.escape_decode в строке и принимая результат (или первый элемент результата, если escape_decode возвращает кортеж, как кажется на Python 3). В Python 3 вы хотите использовать codecs.unicode_escape_decode при работе со строками (в отличие от объектов байтов).

    Просто распечатайте его:

     >>> a = '\\u201c' >>> print a \u201c 
    Interesting Posts

    Копирование многопоточного файла намного медленнее, чем один поток на многоядерном процессоре

    Многопроцессорность в python с более чем двумя уровнями

    Pyside, основной вопрос webkit

    Неподдерживаемая операция: не записываемый питон

    Есть ли элегантный способ циклически перебирать список N раз через итерацию (например, itertools.cycle, но ограничивать циклы)?

    Как установить переменную среды в Amazon Elastic Beanstalk (Python)

    Python: Элегантный способ проверить, соответствует ли хотя бы одно регулярное выражение в списке строке

    Объект BlockNode не имеет атрибута 'context'

    Использование Cython для связывания Python с общей библиотекой

    Использование векторизации Numpy для функций, возвращающих векторы

    Matplotlib – Как удалить определенную линию или кривую

    разница в производительности re.match vs re.search

    Статистическое масштабирование автокорреляции с использованием numpy.fft

    В python, как проверить, действительна ли дата?

    Что такое кросс-платформенный метод перечисления последовательных портов в Python (включая виртуальные порты)?

    Python - лучший язык программирования в мире.