Python Convert Back Slashes转发斜杠

Joh*_*n87 27 python replace

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

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

我有三种方法:

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

dir = os.path.normpath(s) 

dir = os.path.normcase(s)
Run Code Online (Sandbox Code Playgroud)

在每种情况下,输出都是

C:folderAfolderB

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

Jas*_*n S 27

你的具体问题是你的replace论点的顺序和逃避,应该是

s.replace('\\', '/')
Run Code Online (Sandbox Code Playgroud)

然后是:

posixpath.join(*s.split('\\'))
Run Code Online (Sandbox Code Playgroud)

在*nix平台上相当于:

os.path.join(*s.split('\\'))
Run Code Online (Sandbox Code Playgroud)

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

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


小智 17

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

import os

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

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

print newPath


Output:<< C:/temp/myFolder/example/  >>
Run Code Online (Sandbox Code Playgroud)


The*_*CAL 8

尝试

path = '/'.join(path.split('\\'))
Run Code Online (Sandbox Code Playgroud)

  • 如果你真的想要得到想象,你可以使用```os.path.sep.join(...)``` (3认同)

Ste*_*fan 8

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

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

要从 Windows 样式(反斜杠)路径转换为正斜杠(通常用于 Posix 路径),您可以使用 pathlib 以非常详细(且与平台无关)的方式进行转换:

import pathlib

pathlib.PureWindowsPath(r"C:\folderA\folderB").as_posix()
>>> 'C:/folderA/folderB'
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,尼尔,我当然同意:-) 特别是不必显式处理“\”和字符串替换帐户以获得稳定而强大的解决方案。 (2认同)

小智 5

路径名在 Windows 中的格式不同。解决方案很简单,假设你有一个这样的路径字符串:

data_file = "/Users/username/Downloads/PMLSdata/series.csv"
Run Code Online (Sandbox Code Playgroud)

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

data_file = r"/Users/username/Downloads/PMLSdata/series.csv"
Run Code Online (Sandbox Code Playgroud)

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