2016-01-25 2 views
1

Я пишу простой скрипт Python, и я хочу заменить все символы / на \ в текстовой переменной. У меня проблема с символом \, потому что это символ эвакуации. Когда я использую replace() метод:Python replace/with

unix_path='/path/to/some/directory' 
unix_path.replace('/','\\') 

затем возвращает следующие строки: \\path\\to\\some\\directory. Конечно, я не могу использовать: unix_path.replace('/','\'), потому что \ является символом эвакуации.

Когда я использую регулярное выражение:

import re 
unix_path='/path/to/some/directory' 
re.sub('/', r'\\', unix_path) 

то есть одни и те же результаты: \\path\\to\\some\\directory. Я хотел бы получить этот результат: \path\to\some\directory.

Примечание: Я знаю os.path, но в этом модуле не найдено допустимого метода.

ответ

4

Вы пропустили что-то: это показано как \\ интерпретатором Python, но ваш правильный результат: '\\' просто как Python представляет символ \ в обычной строке. Это строго эквивалентно \ в необработанной строке, например. 'some\\path такой же, как r'some\path'.

А также: Python на окнах прекрасно знает, как использовать / в дорожках.

Вы можете использовать следующий трюк, хотя, если вы хотите, чтобы ваш dislpay быть OS-зависимый:

In [0]: os.path.abspath('c:/some/path') 
Out[0]: 'c:\\some\\path' 
+1

Try 'г '\'' в оболочке. – TigerhawkT3

+0

Ага, хорошо, я этого не знал! Ответ отредактирован. –

+0

Спасибо за ответ. Мне нужно это для некоторых отчетов на сервере samba Linux, и пользователи Windows будут читать эти отчеты. Привычные трюки хороши, но в этом случае они мне не понадобятся. :-) – JiriHnidek

2

Вам не нужно регулярное выражение для этого:

>>> unix_path='/path/to/some/directory' 
>>> unix_path.replace('/', '\\') 
'\\path\\to\\some\\directory' 
>>> print(_) 
\path\to\some\directory 

И, более скорее всего, вы должны использовать что-то в os.path вместо того, чтобы ручаться с этим видом вручную.

0

Это работает для меня:

unix_path= '/path/to/some/directory' 

print(unix_path.replace('/','\\')) 

результат:

\path\to\some\directory