【问题标题】:Python replace / with \Python 将 / 替换为 \
【发布时间】:2016-05-01 18:29:42
【问题描述】:

我编写了一些简单的 Python 脚本,我想将文本变量中的所有字符 / 替换为 \。我对字符\ 有疑问,因为它是转义字符。当我使用replace() 方法时:

unix_path='/path/to/some/directory'
unix_path.replace('/','\\')

然后它返回以下字符串:\\path\\to\\some\\directory。当然,我不能使用:unix_path.replace('/','\'),因为\是转义字符。

当我使用正则表达式时:

import re
unix_path='/path/to/some/directory'
re.sub('/', r'\\', unix_path)

那么它有相同的结果:\\path\\to\\some\\directory。我想得到这个结果:\path\to\some\directory.

注意:我知道os.path,但是我在这个模块中没有找到任何可行的方法。

【问题讨论】:

    标签: python regex string replace path


    【解决方案1】:

    这对我有用:

    unix_path= '/path/to/some/directory'
    
    print(unix_path.replace('/','\\'))
    

    结果:

    \path\to\some\directory
    

    【讨论】:

      【解决方案2】:

      你遗漏了一些东西:它被 Python 解释器显示\\,但你的结果是正确的:'\\' 正是 Python 在普通字符串中表示字符 \ 的方式。这严格等同于原始字符串中的\,例如'some\\pathr'some\path' 相同。

      另外:Windows 上的 Python 非常清楚如何在路径中使用 /

      如果您希望您的 dislpay 依赖于操作系统,您可以使用以下技巧:

      In [0]: os.path.abspath('c:/some/path')
      Out[0]: 'c:\\some\\path'
      

      【讨论】:

      • 在 shell 中尝试r'\'
      • 感谢您的回复。 Linux samba 服务器上的一些报告我需要它,Windows 用户会阅读这些报告。建议的技巧很好,但在这种情况下我不需要它们。 :-)
      【解决方案3】:

      您不需要正则表达式:

      >>> unix_path='/path/to/some/directory'
      >>> unix_path.replace('/', '\\')
      '\\path\\to\\some\\directory'
      >>> print(_)
      \path\to\some\directory
      

      而且,更有可能的是,您应该在 os.path 中使用某些东西,而不是手动弄乱这种东西。

      【讨论】:

        猜你喜欢
        • 2011-07-08
        • 1970-01-01
        • 2013-12-31
        • 2020-07-18
        • 1970-01-01
        • 2023-03-05
        • 2019-02-25
        • 2021-05-15
        相关资源
        最近更新 更多