Python转义反斜杠

3

我正在尝试转义反斜杠,但想要了解正确的做法。

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

以上代码可以正常运行。

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

例如:

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

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

是的,但我想要避免它。否则我会得到一个错误:没有这样的文件或目录:'C:\Users\test.doc'。 - user4723845
这就是回溯信息的样子吗? - Padraic Cunningham
@PadraicCunningham 是的 - user4723845
1
你是如何运行这个程序并传递变量的? - Padraic Cunningham
1
args.source 是从命令行中获取的,因此您需要根据您使用的 shell 正确引用/转义内容。换句话说,这不是 Python 的问题,而是 shell 的问题。 - chepner
显示剩余3条评论
1个回答

5
因此,在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

在确定需要使用哪些位置之前,您需要全面考虑!这种解决方案可能更适合您的需求。有点有趣,我以前没有想到过这样做。希望这可以帮助您!


我获取的路径是动态的,因此我需要一些函数来处理它。 - user4723845

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接