2012-07-04 188 views
6

Tôi không thể thấy sự khác biệt đáng kể giữa hai dòng sau.Lỗi Python - hoặc sự ngu ngốc của tôi - EOL khi quét chuỗi chữ

Tuy nhiên, các phân tích cú pháp đầu tiên và không phân tích cú pháp thứ hai.

In [5]: n=""" \\"Axis of Awesome\\" """ 

In [6]: n="""\\"Axis of Awesome\\"""" 
    File "<ipython-input-6-d691e511a27b>", line 1 
    n="""\\"Axis of Awesome\\"""" 
           ^
SyntaxError: EOL while scanning string literal 

Đây có phải là lỗi/tính năng/kỳ quặc của Python hay tôi thiếu một điều gì đó cơ bản?

+1

Chỉ cần sử dụng ' ''' 'thay vì ' """ ' –

+0

' \\ 'sẽ không thoát khỏi dấu ngoặc kép, bởi vì đó là dấu gạch chéo ngược thoát. – katrielalex

Trả lời

9

Bốn dấu ngoặc kép cuối cùng trong

"""\\"Axis of Awesome\\"""" 

được phân tích cú pháp như """, ví dụ cuối chuỗi, tiếp theo là ", ví dụ: khởi đầu của một chuỗi mới theo nghĩa đen. Tuy nhiên, văn học mới này chưa bao giờ được hoàn thành. Ví dụ đơn giản:

>>> """foo""""bar" 
'foobar' 
>>> """foo""" "bar" 
'foobar' 

Nếu bạn muốn tránh vấn đề này, sau đó thay thế """ với r' hoặc loại bỏ các ":

>>> """\\"Axis of Awesome\\\"""" 
'\\"Axis of Awesome\\"' 
>>> r'\"Axis of Awesome\"' 
'\\"Axis of Awesome\\"' 
+0

r 'cách giải quyết tốt –

0

4 dấu ngoặc kép cuối cùng của bạn đang được đánh giá là "" & "" thay vì những gì bạn đang mong đợi nó được đánh giá là " & """.

+2

Thực ra, nó được phân tách thành' "" "', sau đó '" '. –