[英]str.replace backslash with forward slash
我想用正斜杠/使用 python 替换 windows 路径中的反斜杠 \。不幸的是,我尝试了几个小时,但我无法解决这个问题。我在这里看到了其他问题,但仍然找不到解决方案 有人可以帮我吗?
这就是我正在尝试的:
path = "\\ftac\admin\rec\pir"
path = path.replace("\", "/")
但是我收到一个错误(SyntaxError: EOL while scanning string literal)并且没有返回我想要的路径: //ftac/admin/rec/pir
,我该如何解决?
我也试过path = path.replace(os.sep, "/")
或path = path.replace("\\", "/")
但使用这两种方法时,第一个双反斜杠变成单斜杠,\a 被删除。 .
天哪,这比乍看起来要复杂一些。
您的问题是您已将 windows 路径存储为普通字符串,而不是原始字符串。 从字符串到原始表示的转换是有损且丑陋的。
这是因为当你创建一个像"\a"
这样的字符串时,intperter 会看到一个特殊字符"\x07"
。
这意味着你必须手动知道你期望这些特殊字符中的哪些,然后如果你看到它们的表示(例如在这个例子中)[lossily] hack back:
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("\\ftac\admin\rec\pir")
'\\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("\\ftac\admin\rec\pir")
'/ftac/admin/rec/pir'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.