忽略 sys.argv 中 '\n' 字符的计算
Ignore evaluation of '\n' character in sys.argv
奇怪的是,当运行这个程序的参数为
program.py "(lp0\nS'cat'\np1\naI5\na."
program.py 为:
import sys,pickle
print sys.argv[1]=="(lp0\nS'cat'\np1\naI5\na."
False 被打印...我已经将评估的差异缩小到 \n 字符但是我找不到忽略这样的方法。
为什么会这样,我该如何解决?
您需要像这样使用原始字符串文字:
sys.argv[1] == r"(lp0\nS'cat'\np1\naI5\na."
此外,您可以在参数中使用不带引号的字符串。
因为Python和shell(推测是Bash)的字符串语法不同
您可能希望运行将程序作为
echo $'"(lp0\nS\'cat\'\np1\naI5\na.'
program.py $'"(lp0\nS\'cat\'\np1\naI5\na.'
奇怪的是,当运行这个程序的参数为
program.py "(lp0\nS'cat'\np1\naI5\na."
program.py 为:
import sys,pickle
print sys.argv[1]=="(lp0\nS'cat'\np1\naI5\na."
False 被打印...我已经将评估的差异缩小到 \n 字符但是我找不到忽略这样的方法。
为什么会这样,我该如何解决?
您需要像这样使用原始字符串文字:
sys.argv[1] == r"(lp0\nS'cat'\np1\naI5\na."
此外,您可以在参数中使用不带引号的字符串。
因为Python和shell(推测是Bash)的字符串语法不同
您可能希望运行将程序作为
echo $'"(lp0\nS\'cat\'\np1\naI5\na.'
program.py $'"(lp0\nS\'cat\'\np1\naI5\na.'