python 3 - 如何将命令行参数中的“\”保存为原始字符串

时间:2013-11-08 08:04:24

标签: python python-3.x escaping

代码非常简单:

import sys
for arg in sys.argv:
    print(arg)

当我使用以下方式运行时:

myProgram.py \\

打印:

C:\myProgram.py
\\

由于“\”是特殊的,因此引用了额外的“\”,因此输入的“\\”变为“\\\\”,并且当它打印时它再次成为“\\”。我怎么能阻止这个,或删除python添加的额外“\”?所以当输入的参数是“\\”时,它会打印“\”;当输入参数为“\ t”时,它会打印一个[tab]; “\ n”打印一个新行;等等?

我的搜索引导我尝试“原始字符串”,因此我将代码更改为

import sys
for arg in sys.argv:
    arg.replace(r'\\',r'\')
    print(arg)

但它引发错误说

SyntaxError: EOL while scanning string literal

似乎“原始字符串”在这里不起作用?

更新:屏幕略有变化

program

output

2 个答案:

答案 0 :(得分:2)

您希望将参数计算为字符串,因此您可以使用eval

import sys
for arg in sys.argv:
    print(eval('"' + arg.replace('"', '\\"') + '"'))

警告:您不应该在制作中使用此方法,因为Eval really is dangerous

答案 1 :(得分:0)

我认为this FAQ

中解释了这个问题