2016-06-26 6 views
0

Я не могу понять следующие результаты:Понять, как обратные косые работать в питона

>>> a='\' 
    File "<stdin>", line 1 
    a='\' 
     ^
SyntaxError: EOL while scanning string literal 


>>> a=r'\' 
    File "<stdin>", line 1 
    a=r'\' 
     ^
SyntaxError: EOL while scanning string literal 

я понял, что приставка «г» сделает строку сырой и \ будет рассматриваться как обычный символ, потому что r'\n' являются два символа, и я просто удалил из него один символ.

>>> a='\\' 
>>> a 
'\\' 
>>> print a 
\ 
>>> repr(a) 
"'\\\\'" 

Мое понимание: a='\\' результаты в строку, которая фактически содержит один \, а другой просто используется, чтобы избежать его. Не могу понять, почему repr(a) приводит к так много обратных косышек.

>>> a=r'\\' 
>>> a 
'\\\\' 
>>> print a 
\\ 
>>> repr(a) 
"'\\\\\\\\'" 

Мое понимание: a=r'\\' это строка с двумя реальными \ с и каждый из которых предваряется с \, чтобы представить его в виде строки питона. Не могу понять, зачем просто писать a на переводчиках 4 \ s и repr(a) возвращает 8 \ s.

ответ

1
SyntaxError: EOL while scanning string literal 

Обработка для сырой строки выполняется после того, как строка lexed. Поскольку '\' не может быть lexed действительным образом, он не может использоваться как часть необработанной строки.

>>> repr(a) 

repr() парных обратных слэш в строке она возвращается. Поскольку вы теперь показываете представление представления, обратная косая черта увеличивается в четыре раза.

0

Вы правы. prefix 'r' сделает строку сырой. Но '\' является единственным исключением.

repr 'Возвращает каноническое строковое представление объекта.'

 Смежные вопросы

  • Нет связанных вопросов^_^