2012-12-02 55 views
9
phiên bản

My Python là:Trong bối cảnh của chuỗi Python Raw

~$ python --version 
Python 2.6.6 

tôi đã cố gắng sau trong Python (Tôi muốn hiển thị tất cả):

1: \ sử dụng như dãy thoát

>>> str('Let\'s Python')  
"Let's Python" 

2: \ sử dụng làm trình tự thoát

>>> 'Let\'s Python'    
"Let's Python" 

3: str() và in như giá trị không gõ

>>> print 'Let\'s Python'  
Let's Python 

4: Python nó một chuỗi nguyên

>>> repr('Let\'s Python')  
'"Let\'s Python"' 

[HỎI]

5: Python chuỗi nguyên

>>> print r'Let\'s Python'  
Let\'s Python 

6: Đây, tôi không hiểu sau:

>>> r'Let\'s Python'    
"Let\\'s Python" 

>>> r'\\' 
'\\\\' 

Tại sao \\? Tại sao đầu ra trong 56 khác nhau?
rrepr() giống nhau không?
Ngoài ra, vui lòng giải thích về đại diện nội bộ của stringraw strings giống hoặc khác nhau.

+0

@MartijnPieters: Thanks !! –

Trả lời

10

Bạn đang bối rối các chuỗi ký tự thô r'' với các biểu diễn chuỗi. Có một sự khác biệt lớn. repr()r''không phải điều tương tự.

r'' Các chuỗi ký tự thô tạo ra một chuỗi giống như một chuỗi ký tự bình thường, ngoại trừ cách nó xử lý các mã thoát. Kết quả được tạo ra vẫn là một chuỗi python. Bạn có thể tạo ra các chuỗi tương tự sử dụng hoặc là một chuỗi nguyên văn chương hoặc một chuỗi bình thường theo nghĩa đen:

>>> r'String with \n escape ignored' 
'String with \\n escape ignored' 
>>> 'String with \\n escape ignored' 
'String with \\n escape ignored' 

Khi không sử dụng một chuỗi nguyên r'' đen tôi đã phải tăng gấp đôi slash để thoát khỏi nó, nếu không nó sẽ được hiểu là biện pháp ký tự dòng mới. Tôi không phải thoát khỏi nó khi sử dụng cú pháp r'' vì nó không giải thích các mã thoát như \n. Các đầu ra, kết quả chuỗi python giá trị, là giống hệt nhau:

>>> r'String with \n escape ignored' == 'String with \\n escape ignored' 
True 

các thông dịch viên được sử dụng repr() để echo những giá trị đó lại cho chúng tôi; các đại diện giá trị python được sản xuất:

>>> print 'String' 
String 
>>> print repr('String') 
'String' 
>>> 'String' 
'String' 
>>> repr('String') 
"'String'" 

Thông báo như thế nào repr() kết quả bao gồm dấu ngoặc kép.Khi chúng tôi chỉ phản hồi số repr() của một chuỗi, kết quả là chính nó một chuỗi, do đó, nó có hai bộ ngoặc kép. Các báo giá " khác đánh dấu sự bắt đầu và kết thúc của kết quả của repr() và chứa trong phạm vi là biểu diễn chuỗi của chuỗi python String.

Vì vậy, r'' là cú pháp để sản xuất chuỗi python, repr() là một phương pháp để tạo chuỗi đại diện cho giá trị python. repr() cũng hoạt động trên các giá trị python khác:

>>> print repr(1) 
1 
>>> repr(1) 
'1' 

Các nguyên 1 được biểu diễn dưới dạng một chuỗi '1' (nhân vật 1 trong một chuỗi).

+0

Cảm ơn Martijn! ... Mặc dù tôi vẫn chưa hiểu tại sao '>>> in r 'String với \ n escape ignore'' in' String with \ n escape ignored' ... single '\', –

+0

@GrijeshChauhan: Bây giờ hãy thử điều đó mà không có 'r' (không thay đổi gì khác). '\ N' trở thành một dòng mới. –

+1

Một điều khác để thể hiện sự khác biệt: 'len (r '\ n')' so với 'len ('\ n')'. Đầu tiên là * hai * ký tự, một '' \ '' dấu gạch chéo ngược và một 'n', cái còn lại là * một * ký tự, một dòng mới. –

Các vấn đề liên quan