2016-03-22 11 views
1

で '\ n' は文字の評価を無視:、奇妙なことにsys.argvの

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." 

また、あなたが引用符なしのパラメータで文字列を使用することができます。

+0

としてプログラムを実行することをお勧めします。 – zondo

+0

Pythonは改行文字として '\ n'を解釈します。 2つの文字 '\'と 'n'を文字列に配置する場合は、 '\\ n'と書く必要があります。 – kazemakase

答えて

1

は、次のようなリテラル生の文字列を使用する必要があります。

0

これは、Pythonとシェル(おそらくBash)の文字列の構文が異なるためです。

あなたがチェックでダブルバックスラッシュ

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