2017-01-23 7 views
1

Я беру курс новичок Python, и это был один из уроков деятельности:вывода печатает символ экранировки []

мой код:

print "How old are you?", 
age = raw_input() 
print "How tall are you?", 
height = raw_input() 
print "How much do you weigh?" 
weight = raw_input() 
print "So, you're %r old, %r tall and %r heavy." % (age, height, weight) 

Я затем запустить его с помощью Powershell и ввода данные при запросе, но когда я набираю в 5'9" по высоте и печатает ввод в конечной строке, это выглядит следующим образом:

So, you're '24' old, '5\'9"' tall and '140 lbs' heavy. 

Как получить обратную косую черту, чтобы уйти

ответ

4

Используя флаг формата %r, вы напечатав Repr строки , Различие объясняется хорошо в this question, но в вашем случае именно:

>>> s = '5\'9"' # need to escape single quote, so it doesn't end the string 
>>> print(s) 
5'9" 
>>> print(str(s)) 
5'9" 
>>> print(repr(s)) 
'5\'9"' 

магнезия, в стремлении быть однозначными, окружила строку в одинарных кавычках и спасся каждый из одинарных кавычек внутри строки. Это хорошо согласуется с тем, как вы вводите константу в исходном коде.

Для получения результата, которую вы ищите, используйте флаг формата %s, а не %r, в строке форматирования.

+0

Благодарим вас за разъяснение этого мне! Я все еще пытаюсь понять различия между различными форматами ввода. TyTy! – bootoons

+3

Не беспокойтесь! Если это или ответ Моисея ответили на ваш вопрос, не забудьте принять один из них, используя галочку слева; который выведет ваш вопрос из очереди вопросов, требующих ответов. Добро пожаловать в StackOverflow! –

2

Не используйте Repr %r в вашем форматировании, используйте %s и строки просто интерполированную без побега любого характера:

print "So, you're %s old, %s tall and %s heavy." % (age, height, weight) 
#    ^ ^  ^