忽略对sys.argv中'\ n'字符的评估

时间:2016-03-22 13:43:08

标签: python sys

奇怪的是,当使用

的参数运行此程序时
program.py "(lp0\nS'cat'\np1\naI5\na."

使用program.py:

import sys,pickle
print sys.argv[1]=="(lp0\nS'cat'\np1\naI5\na."

打印错误...我已将评估中的差异缩小到\ n字符但是我无法忽略这些差异。

为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:2)

您需要使用原始字符串文字,如下所示:

sys.argv[1] == r"(lp0\nS'cat'\np1\naI5\na."

此外,您可以在参数中使用不含引号的字符串。

答案 1 :(得分:1)

这是因为Python和shell中的字符串语法(可能是Bash)是不同的。

您可能希望将程序作为

运行
echo       $'"(lp0\nS\'cat\'\np1\naI5\na.'
program.py $'"(lp0\nS\'cat\'\np1\naI5\na.'