Python Convert Back Slashes转发斜杠

时间:2014-08-05 19:39:20

标签: python replace

我在python中工作,我需要转换它:

C:\ folderA \ folderB到C:/ folderA / folderB

我有三种方法:

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

dir = os.path.normpath(s) 

dir = os.path.normcase(s)

在每种情况下,输出都是

C:folderAfolderB

我不确定我做错了什么,有什么建议吗?

7 个答案:

答案 0 :(得分:25)

您的具体问题是replace参数的顺序和转义,应为

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

然后是:

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

在* nix平台上相当于:

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

但是不要在Windows上依赖它,因为它更喜欢特定于平台的分隔符。也:

  

请注意,在Windows上,因为每个目录都有一个当前目录   drive,os.path.join(“c:”,“foo”)表示相对于的路径   驱动器C上的当前目录:(c:foo),而不是c:\ foo。

答案 1 :(得分:13)

我最近发现了这个并且认为值得分享:

import os

path = "C:\\temp\myFolder\example\\"

newPath = path.replace(os.sep, '/')

print newPath


Output:<< C:/temp/myFolder/example/  >>

答案 2 :(得分:7)

尝试

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

答案 3 :(得分:2)

在Windows中,路径名的格式不同。该解决方案很简单,假设您具有如下所示的路径字符串:

data_file = "/Users/username/Downloads/PMLSdata/series.csv"

只需将其更改为此:(在路径的前面添加r)

data_file = r"/Users/username/Downloads/PMLSdata/series.csv"

字符串前的修饰符r告诉Python这是一个原始字符串。在原始字符串中,反斜杠是按字面意义解释的,而不是转义符。

答案 4 :(得分:0)

怎么样:

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

答案 5 :(得分:0)

要定义路径的变量,您最初必须添加r,然后在末尾添加替换语句.replace('\\', '/')

例如:

In>>  path2 = r'C:\Users\User\Documents\Project\Em2Lph\'.replace('\\', '/')
In>>  path2 
Out>> 'C:/Users/User/Documents/Project/Em2Lph/'

此解决方案不需要额外的库

答案 6 :(得分:0)

很抱歉迟到了,但我想知道没有人建议使用 pathlib-library。

pathlib 是“面向对象的文件系统路径”的模块

要将 Windows 样式(反斜杠)路径转换为正斜杠(通常用于 Posix 路径),您可以使用 pathlib 以非常冗长(与平台无关)的方式执行此操作:

import pathlib

pathlib.PureWindowsPath(r"C:\folderA\folderB").as_posix()
>>> 'C:/folderA/folderB'

请注意,该示例使用字符串字面量“r”(以避免将“\”用作转义字符) 在其他情况下,路径应该正确引用(使用双反斜杠)“C:\\folderA\\folderB”