【问题标题】:Python regex replace backslash or frontslashPython 正则表达式替换反斜杠或前斜杠
【发布时间】:2014-07-15 22:29:00
【问题描述】:

我正在尝试用双反斜杠替换字符串中的反斜杠或正斜杠。我已经尝试了几件事,但似乎不起作用。¨

到目前为止我的工作:

string = 'C:\Users\Victor\Dropbox\Private\files\test.txt'

f = re.sub(r'[\\\/]', '\\\\', string)

这会打印字符串:

'C:\Users\Victor\Dropbox\Privateiles   est.txt'

但我真正想要的是一个看起来像这样的字符串:

'C:\\Users\\Victor\\Dropbox\\Private\\files\\test.txt'

这样当我打印字符串时,它会看起来像原来的样子

'C:\Users\Victor\Dropbox\Private\files\test.txt'

【问题讨论】:

    标签: python regex string replace


    【解决方案1】:

    只需将该字符串转换为原始字符串:

    >>> string = r'C:\Users\Victor\Dropbox\Private\files\test.txt'
    >>> string
    'C:\\Users\\Victor\\Dropbox\\Private\\files\\test.txt'
    >>> print string
    C:\Users\Victor\Dropbox\Private\files\test.txt
    

    【讨论】:

    • 字符串作为变量呢? string = raw_input('test: ') 如何让它将字符串解释为原始字符串?
    • 我不知道编辑是否应该回答我的问题,但它没有。我仍然无法将用户输入解释为原始字符串
    • +1 表示原始字符串。 :) @VictorVH 如果答案是正确的,请考虑接受它。
    【解决方案2】:

    如果您真正了解的是路径操作,我会使用 os 模块。

    >>> s = r'C:\Users\Victor\Dropbox\Private\files\test.txt'
    >>> import os
    >>> os.path.normcase(s)
    'C:\\Users\\Victor\\Dropbox\\Private\\files\\test.txt'
    

    os.path.normcase

    规范化路径名的大小写。在UnixMac OS X 上,这将返回路径不变;在不区分大小写的文件系统上,它将路径转换为小写。 在 Windows 上,它还将正斜杠转换为反斜杠。如果路径类型不是strbytes,则引发TypeError

    【讨论】:

    • 这确保将字符串视为路径或?
    • 请阅读我刚刚为normcase添加的描述,使用该功能后作为路径使用是安全的。请注意,就 python 而言,它仍然是 string 文字
    • 我刚试过这个。它返回一个无效的字符串:c:\users\victor\dropbox\private ilewatcher\main.py
    • 嗯,这很奇怪,我是从 IDLE 终端中复制粘贴的。您使用的是什么 IDE,在什么操作系统上?
    • +1 用于使用os。此外,您可能对不将反斜杠解释为转义字符的原始字符串感兴趣。 r"C:\Users\Victor\Dropbox\Private\files\test.txt".
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多