Вопрос по python-2.7, python – Python как заменить обратную косую черту на re.sub ()

10

У меня есть следующая строка

mystr1 = 'mydirname'
myfile = 'mydirname\myfilename'

Я пытаюсь это сделать

newstr = re.sub(mystr1 + "\","",myfile)

Как мне избежать обратной косой черты, которую я пытаюсь объединить с mystr1?

Я знаю, что это никоим образом не ответит на твой вопрос, но, если возможно, даже не ходи туда; использоватьos.path.join и другиеos.path функции для управления путями независимым от системы образом. Amadan
@ Amadan, спасибо за ответ, но я не пытаюсь манипулировать какими-либо путями, я просто пытаюсь извлечь контент из определенного файла (для этого я использую os.path), а затем минимизирую данные и размещение его в виде JS-переменной в соответствии с исходным именем файла. Я просто манипулирую строкой имени файла (которая включает полный путь) для JS var. user838437
Я просто подумал, что то, что ты делаешь, почти такое же, какos.path.basename(myfile). Виноват Amadan

Ваш Ответ

2   ответа
22

Вам нужен четырехкратный обратный слеш:

newstr = re.sub(mystr1 + "\\\\", "", myfile)

Reason:

Regex для сопоставления с одной обратной косой чертой:\\ Строка, чтобы описать это регулярное выражение:"\\\\".

Или вы можете использовать необработанную строку, поэтому вам нужен только двойной обратный слеш:r"\\"

Это работает, спасибо. Я приму ответ, как только смогу. user838437
Нет в моем Python 3.2 (r32: 88445, 20 февраля 2011, 21:29:02) [MSC v.1500 32 бит (Intel)] на win32:>>> subject = "is th\is: a path?"; re.sub("[/\\\:?\"]", "_", subject) 'is th_is_ a path_' Cees Timmerman
Но я только что заметил, что идет только для неизвестных побегов, как "\:". Cees Timmerman
ты тоже можешь сделатьnewstr = re.sub(mystr1 + re.escape("\\"), "", myfile). Если ваш слеш находится в своей собственной переменнойslash = "\\", Вы можетеre.sub(mystr1 + re.escape(slash), "", myfile) mpag
0

как и любой другой символ, поместив перед ней обратную косую черту. Это означает, что "\\" - это один обратный слеш.

Да, но мы имеем дело со строками, которые Содержат регулярное выражение. Применяются правила двойного побега. Tim Pietzcker
TEOUltimus: ваш ответ в основном правильный; проблема была чуть глубже. Я буду голосовать так, чтобы это было в 0 вместо -1. Еще один отзыв в следующий раз: комментарий «почему я ненавижу питона» не очень ценится в stackoverflow. Stackoverflow предназначен для убедительных ответов, а не для грязного слияния. Reinout van Rees
и хотя вы можете подумать, что r "\" получит вас так же, как "\\", так как r "\\" означает "\\\\", вы ошибаетесь ... вы не можете иметь одиночный \: P mpag

Похожие вопросы