【问题标题】:Python escaping backslashPython转义反斜杠
【发布时间】:2015-09-21 16:39:03
【问题描述】:

我试图避开反斜杠,但试图理解正确的做法

foo = r'C:\Users\test.doc'

上面的工作正常

但是,当我想转义存储在变量中的路径时

例如:

parser.add_argument('-s', '--source', type = str, help = 'Source file path')

现在,如何转义 - args.source 中的值

【问题讨论】:

  • 我认为来自外部来源的字符是按字面意思理解的。
  • 是的,但我想逃避它。或者我得到一个错误 No such file or directory: 'C:\\Users\\test.doc
  • 回溯是这样的吗?
  • 你是如何运行这个你传递一个变量的?
  • args.source 是从命令行填充的,因此您需要确保根据您使用的 shell 正确引用/转义内容。换句话说,这不是 Python 问题,而是 shell 问题。

标签: python escaping


【解决方案1】:

所以在python中有一些转义序列需要注意,主要是这些。

因此,当 add_argument 方法解析该文件位置的字符串时,它可能不会像您声明的那样被解释为原始字符串,并且无法在声明之外转义反斜杠。

您可以做的是将其保留为常规字符串(从字符串中删除“r”前缀)并在任何可能与另一个转义字符冲突的地方使用转义字符作为反斜杠(在这种情况下\t)。这可能会起作用,因为该方法可以正确评估字符串。

尝试像这样声明你的字符串。

foo = "C:\Users\\test.doc"

希望这有助于解决您的问题!

编辑:

为了响应处理动态文件位置,您可能会执行以下操作!

def clean(s):
    s = s.replace("\t", "\\t")
    s = s.replace("\n", "\\n")
    return s

直到您覆盖了所有基地以及您可能需要使用的位置!此解决方案可能更适合您的需求。有点滑稽,我以前没想过这样做。希望这会有所帮助!

【讨论】:

  • 我得到的路径是动态的,所以我需要某种函数来处理它。
猜你喜欢
  • 1970-01-01
  • 2015-05-19
  • 2011-11-09
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多