3

代码很简单:

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

当我使用以下方法运行它时:

myProgram.py \\

它打印:

C:\myProgram.py
\\

由于“\”是特殊的,在底层,python添加了额外的“\”,所以输入的“\\”变成了“\\\\”,当它打印时它又变成了“\\”。我怎样才能阻止这个,或者删除python添加的额外“\”?所以当输入的参数是“\\”时,它会打印“\”;当输入的参数是“\t”时,它会打印一个 [tab];"\n" 打印一个新行;ETC?

我的搜索导致我尝试“原始字符串”,所以我将代码更改为

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

但它会抛出错误说

SyntaxError: EOL while scanning string literal

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

更新:屏幕截图略有变化

程序

输出

4

2 回答 2

2

您想将参数评估为字符串,因此您可以使用eval

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

警告:你不应该在生产中使用这种方法,因为Eval 真的很危险

于 2013-11-08T08:15:08.197 回答
0

我认为这个问题在这个FAQ中有解释

于 2013-11-08T08:17:29.677 回答