我想用python将windows路径中的反斜杠替换为正斜杠/。不幸的是,我尝试了几个小时,但我无法解决这个问题…我在这里看到了其他问题,但我仍然找不到解决方案有人能帮帮我吗?
这就是我正在尝试的:
path = "\ftacadminrecpir"
path = path.replace("", "/")
但是我得到了一个错误(SyntaxError: EOL而扫描字符串文字),并没有返回我想要的路径://ftac/admin/rec/pir
,我怎么解它?
我也尝试了path = path.replace(os.sep, "/")
或path = path.replace("\", "/")
,但两种方法的第一个双反斜杠变成单一和a被删除…
天哪,这比最初看起来要复杂一些。
你的问题是你把你的窗口路径存储为普通字符串,而不是原始字符串。从字符串到其原始表示的转换是有损且丑陋的。
这是因为当您创建像"a"
这样的字符串时,解释器会看到一个特殊字符"x07"
。
这意味着您必须手动知道您所期望的这些特殊字符中的哪一个,然后如果您看到它们的表示(例如在这个示例中),则[损失]返回:
def str_to_raw(s):
raw_map = {8:r'b', 7:r'a', 12:r'f', 10:r'n', 13:r'r', 9:r't', 11:r'v'}
return r''.join(i if ord(i) > 32 else raw_map.get(ord(i), i) for i in s)
>>> str_to_raw("\ftacadminrecpir")
'\ftac\admin\rec\pir'
现在您可以使用pathlib
模块,它可以以系统无关的方式处理路径。在您的示例中,您知道您有类似Windows的路径作为输入,因此您可以使用如下命令:
import pathlib
def fix_path(path):
# get proper raw representaiton
path_fixed = str_to_raw(path)
# read in as windows path, convert to posix string
return pathlib.PureWindowsPath(path_fixed).as_posix()
>>> fix_path("\ftacadminrecpir")
'/ftac/admin/rec/pir'