2016-03-22 5 views
1

Как ни странно, при запуске этой программы с аргументамиИгнорировать оценку ' п' характера в 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." 

Ложные печатается. .. Я сузил разницу в оценке с символом \ n, но я не могу найти способ игнорировать такие.

Почему это и как я могу это исправить?

+0

Двухместный обратный слэш в чеке. – zondo

+0

Python интерпретирует '\ n' как символ новой строки. Если вы хотите поместить два символа '\' и 'n' в строку, вам нужно написать '\\ n' – kazemakase

ответ

1

Вы должны использовать сырец строковый литерал как это:

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

Кроме того, вы можете использовать строку в параметрах без кавычек.

0

Это потому, что синтаксис строк в Python и в оболочке (предположительно Bash) отличается.

Вы можете запустить программу как

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