在Python中用正斜杠替换反斜杠

在Python中用正斜杠替换反斜杠,python,Python,我正在用python编写一个跨平台的文件资源管理器。我试图将路径中的任何反斜杠转换为正斜杠,以便以一种格式处理所有路径 我不仅尝试过使用string.replace(str,“\\”,“/”),还尝试过手动创建一个方法来搜索字符串并替换实例,但这两种方法都不能正常工作,例如: \dir\anotherdir\foodir\more 更改: /dir/anotherdir\x0oodir/more 我假设这与Python如何表示转义字符或类似的东西有关。如何防止这种情况发生?您应该使用这种方法

我正在用python编写一个跨平台的文件资源管理器。我试图将路径中的任何反斜杠转换为正斜杠,以便以一种格式处理所有路径

我不仅尝试过使用string.replace(str,“\\”,“/”),还尝试过手动创建一个方法来搜索字符串并替换实例,但这两种方法都不能正常工作,例如:

\dir\anotherdir\foodir\more
更改:

/dir/anotherdir\x0oodir/more
我假设这与Python如何表示转义字符或类似的东西有关。如何防止这种情况发生?

您应该使用这种方法。在Python3中,您还可以使用以可移植的方式表示路径,这样您就不必再担心斜杠之类的事情了。

这不管用吗:

    >>> s = 'a\\b'
    >>> s
    'a\\b'
    >>> print s
    a\b
    >>> s.replace('\\','/')
    'a/b'
?

编辑:

当然,这是一个基于字符串的解决方案,如果您要处理文件系统路径,那么使用os.path更明智。

, 您可以使用以下方法:


r'\dir\anotherdir\foodir\more'.replace('\\','/')
工作正常。发生错误的原因是您自己将
\dir\anotherdir\foodir\more
作为字符串键入,而
\f
是特殊的。如果希望Python不解释特殊字符(以反斜杠为前缀的字符),则应使用“原始”字符串,例如:
r'\dir\anotherdir\foodir\more'
os.path。abspath
将它们转换为统一格式。我在os.path中看不到任何与用正向斜杠替换反斜杠相关的函数。请您详细说明一下好吗?
os.path
中的函数是专门设计的,因此您不必关心路径中包含的斜杠类型。例如,如果您使用
os.path.join
来加入路径,它将为您的平台使用适当的分隔符。谢谢,所以要明确的是,os.path中没有实际替换斜杠的函数,只有允许您避免处理路径分隔符的函数。
>>> import pathlib
>>> p = pathlib.PureWindowsPath(r'\dir\anotherdir\foodir\more')
>>> print(p)    
\dir\anotherdir\foodir\more
>>> print(p.as_posix())
/dir/anotherdir/foodir/more
>>> str(p)
'\\dir\\anotherdir\\foodir\\more'
>>> str(p.as_posix())
'/dir/anotherdir/foodir/more'