Почему `n` не работает в Python

Вопрос:Я пытаюсь привести пример: python -c "import sys; print sys.argv[1]" "testntest" Выход: testntest Но я хочу следовать test test Обновление 1 # Как предложил @devnull, можно решить проблему, если пользователь сам передает с помощью $, но как насчет того, как python должен позаботиться об этом? Я пробовал: python -c "import sys; print '$' + sys.argv[1]"

Вопрос:

Я пытаюсь привести пример:

python -c «import sys; print sys.argv[1]» «testntest»

Выход:

testntest

Но я хочу следовать

test test

Обновление 1 #
Как предложил @devnull, можно решить проблему, если пользователь сам передает с помощью $, но как насчет того, как python должен позаботиться об этом?

Я пробовал:

python -c «import sys; print ‘$’ + sys.argv[1]» ‘testntest’

но вывод:

$testntest Лучший ответ:

Как упоминалось в deed02392, оболочка посылает символы буквально, поэтому python “ускоряет” обратную косую черту внутри. Чтобы понять, что я имею в виду, попробуйте

python -c «import sys; print repr(sys.argv[1])» «testntest» ‘test\ntest’

Чтобы обойти это, выполните:

python -c «import sys; print sys.argv[1].decode(‘string_escape’)» «testntest» test test Ответ №1

Скажите оболочке передать то, что вы хотите видеть:

python -c «import sys; print sys.argv[1]» $’testntest’

Это создаст:

test test

Синтаксис $’string’ называется ANSI-C Quoting.

Другим способом было бы рассказать оболочке интерпретировать исходный вывод:

python -c «import sys; print sys.argv[1]» ‘testntest’ | xargs -0 echo -en

Это также даст:

test test Ответ №2

Ваша оболочка отправляет python script двум буквальным символам и n.

Поскольку вы находитесь на bash, я верю, что если вы просто нажмете фактический ключ возврата после «test, он обнаружит, что вы все еще вводите аргумент, и вы можете продолжить с другим test», а затем передать это питон.

Оцените статью
Добавить комментарий