2014-08-05 4 views
12

Я работаю в Python, и мне нужно, чтобы преобразовать это:Python Преобразования обратное косые черт, чтобы слэш

C: \ folderA \ folderB в C:/folderA/folderB

Я три подхода:

dir = s.replace('\\','/') 

dir = os.path.normpath(s) 

dir = os.path.normcase(s) 

В каждом сценарии выход был

С: folderAfolderB

Я не уверен, что я делаю неправильно, любые предложения?

+0

Зачем вам нужно, чтобы преобразовать его? Вы можете использовать 'r'C: \ folderA \ folderB'' – Andy

+0

Ну,' s.replace ('//', '\') 'не должен даже запускаться. Недопустимое значение '' \ '', вам нужно избежать обратных косых черт. Правильный способ: 's.replace ('/', '\\')'. Прямо сейчас, когда он работает, он просто даст вам '\ f', который является символом перевода строки. – ZWiki

+0

Я думаю, что неправильно написал, что моя оригинальная строка была dir = s.replace ('//', '\'). Я буду проверять и обновлять сообщение, если это так. – John87

ответ

14

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

s.replace('\\', '/') 

Тогда есть:

posixpath.join(*s.split('\\')) 

Что на * NIX платформе эквивалентно:

os.path.join(*s.split('\\')) 

Но не полагайтесь на это на Windows, потому что он предпочтет разделитель для конкретной платформы. Также:

Обратите внимание, что на Windows, так как есть текущий каталог для каждого привода, os.path.join («C:», «Foo») представляет собой путь относительно текущей директории на диске C: (c: foo), а не c: \ foo.

+0

Я только что напечатал результаты с моего ввода и заметил, что обратных косых черт не существует, что объясняет мой вывод , Это было отличное объяснение! Благодаря! – John87

4

Попробуйте

path = '/'.join(path.split('\\')) 
+1

Если вы действительно хотите получить фантазию, вы можете использовать '' 'os.path.sep.join (...)' '' – wnnmaw

0

Как насчет:

import ntpath 
import posixpath 
. 
. 
. 
dir = posixpath.join(*ntpath.split(s)) 
. 
. 
+1

Избегайте ответов только на код.Предоставьте объяснение вашему ответу и прокомментируйте поведение, которое имеет OP. –

Смежные вопросы