Как заменить «\» на «/» с помощью регулярного выражения в Python

Я пробовал это, но не работал.

import re

s = "Ex\am\ple String"
replaced = re.sub("\", "/", s)

print replaced 

Какие-либо предложения?


person udhkl    schedule 28.02.2018    source источник
comment
Вместо этого используйте replace(). s.replace(r'\\', r'/')   -  person Srdjan M.    schedule 28.02.2018
comment
Вам не нужно использовать регулярное выражение для замены буквальных подстрок: ответ Тима Ли правильный и самый быстрый способ.   -  person Casimir et Hippolyte    schedule 28.02.2018


Ответы (4)


Просто используйте этот код:

s = s.replace("\\", "/")

Он заменяет все обратные косые черты на прямую косую черту. Причина двух обратных косых черт в том, что вам нужно избежать другой обратной косой черты.

person Tim Lee    schedule 28.02.2018

Попробуйте так с \\\\:

import re

s = "Ex\am\ple String"
replaced = re.sub("\\\\", "/", s)

print replaced 
person The fourth bird    schedule 28.02.2018

Вы, вероятно, не используете достаточно обратной косой черты. Обратная косая черта часто является escape-символом. Попробуйте прокомментировать здесь, используя один \, затем два \, вы заметите, что здесь вы получите только один вывод.

кодовая версия того, что я только что набрал, чтобы показать, что я имею в виду:

Backslash is often an escape character. Try commenting here using one \, 
then two \\, you'll notice you only get one in the output here.

Я написал аналогичный код в R, когда вырезал и вставлял расположение файлов.

fileLoc = function(){
  Rlocation = gsub( "\\\\","/",readClipboard())
  return(Rlocation)
}

Обратите внимание, что для этого требуется 4 обратной косой черты.

Попробуйте следующее:

s = "Ex\am\ple String"
replaced = re.sub("\\\\", "/", s)
person Dick McManus    schedule 28.02.2018

У вас есть две проблемы: во-первых, ваша строка не то, что вы думаете, потому что '\a' интерпретируется как escape-литерал. Чтобы исправить это, используйте строку raw или regex,

s = r"Ex\am\ple String"

Теперь вы можете делать то, что хотите, используя

replaced = re.sub(r"\\", "/", s)

Здесь необходимы два \, потому что re ожидает, что один \ будет escape-символом. Кроме того, r"\\" должна быть необработанной строкой, потому что Python в более общем смысле также интерпретирует "\" как escape-символ. Чтобы «экранировать escape-символ», вы можете снова выполнить двойной трюк \, и поэтому другим способом сделать это будет

replaced = re.sub("\\\\", "/", s)

Лучший метод

Помимо экранирования и модуля re, для таких простых замен вы должны использовать метод str replace,

replaced = s.replace("\\", "/")

("нужны только" два \, потому что мы используем только "голый" Python, а не re)

person jmd_dk    schedule 28.02.2018