Hướng dẫn what is r at the end of string in python? - r ở cuối chuỗi trong python là gì?

Chuỗi thô ngây thơ

Ý tưởng ngây thơ của một chuỗi thô là

Nếu tôi đặt một R trước một cặp trích dẫn, tôi có thể đặt bất cứ điều gì tôi muốn giữa các trích dẫn và nó sẽ có nghĩa là chính nó.

Thật không may, điều này không hoạt động, bởi vì nếu bất cứ điều gì xảy ra có chứa báo giá, chuỗi thô sẽ kết thúc vào thời điểm đó.

Đơn giản là không thể mà tôi có thể đặt "bất cứ điều gì tôi muốn" giữa các trình phân cách cố định, bởi vì một số trong đó có thể trông giống như dấu phân cách chấm dứt - bất kể dấu phân cách đó là gì.

Chuỗi thô trong thế giới thực (biến thể 1)

Một cách tiếp cận có thể cho vấn đề này sẽ là nói

Nếu tôi đặt một R trước một cặp trích dẫn, tôi có thể đặt bất cứ điều gì tôi muốn giữa các trích dẫn miễn là nó không chứa một trích dẫn và nó sẽ có nghĩa là chính nó.as long as it does not contain a quote and it will mean itself.

Hạn chế này nghe có vẻ khắc nghiệt, cho đến khi người ta nhận ra rằng việc cung cấp các trích dẫn lớn của Python có thể phù hợp với hầu hết các tình huống với quy tắc này. Sau đây là tất cả các trích dẫn Python hợp lệ:

'
"
'''
"""

Với nhiều khả năng này cho dấu phân cách, hầu hết mọi thứ đều có thể được thực hiện để làm việc. Về ngoại lệ duy nhất là nếu chuỗi theo nghĩa đen được cho là chứa một danh sách đầy đủ của tất cả các trích dẫn Python được phép.

Chuỗi thô trong thế giới thực (biến thể 2, như trong Python)

Python, tuy nhiên, có một tuyến đường khác bằng cách sử dụng một phiên bản mở rộng của quy tắc trên. Nó có hiệu quả

Nếu tôi đặt một R trước một cặp trích dẫn, tôi có thể đặt bất cứ điều gì tôi muốn giữa các trích dẫn miễn là nó không chứa một trích dẫn và nó sẽ có nghĩa là chính nó. Nếu tôi khăng khăng bao gồm một báo giá, thậm chí điều đó được cho phép, nhưng tôi phải đặt một dấu gạch chéo ngược trước đó.If I insist on including a quote, even that is allowed, but I have to put a backslash before it.

Vì vậy, cách tiếp cận Python, theo một nghĩa nào đó, thậm chí tự do hơn cả biến thể 1 ở trên - nhưng nó có tác dụng phụ của "Mis" giải thích trích dẫn đóng như một phần của chuỗi nếu ký tự dự định cuối cùng của chuỗi là dấu gạch chéo ngược.

Biến thể 2 không hữu ích:

  • Nếu tôi muốn báo giá trong chuỗi của mình, nhưng không phải là dấu gạch chéo ngược, phiên bản cho phép của chuỗi theo nghĩa đen của tôi sẽ không phải là thứ tôi cần. Tuy nhiên, với ba loại trích dẫn khác mà tôi có theo ý của mình, có lẽ tôi sẽ chỉ chọn một trong số đó và vấn đề của tôi sẽ được giải quyết - vì vậy đây không phải là trường hợp có vấn đề.
    However, given the three different other kinds of quotes I have at my disposal, I will probably just pick one of those and my problem will be solved -- so this is not problematic case.
  • Trường hợp có vấn đề là một trường hợp này: nếu tôi muốn chuỗi của mình kết thúc bằng một dấu gạch chéo ngược, tôi sẽ bị mất. Tôi cần phải dùng đến việc kết hợp một chuỗi không phải là raw theo nghĩa đen có chứa dấu gạch chéo ngược.

Sự kết luận

Sau khi viết bài này, tôi đi với một số áp phích khác mà biến thể 1 sẽ dễ hiểu hơn và chấp nhận và do đó có nhiều pythonic hơn. Đó là cuộc sống!

Chuỗi RAW Python được tạo bằng tiền tố một chuỗi theo nghĩa đen với ‘r, hoặc‘ r. Chuỗi thô Python coi Backslash (\) là một ký tự theo nghĩa đen. Điều này rất hữu ích khi chúng tôi muốn có một chuỗi chứa dấu gạch chéo ngược và don không muốn nó được coi là một nhân vật thoát.

Chuỗi Raw Python

Hãy nói rằng chúng tôi muốn tạo một chuỗi hi \ nhello trong Python. Nếu chúng ta cố gắng gán nó cho một chuỗi bình thường, \ n sẽ được coi là một dòng mới.Hi\nHello in python. If we try to assign it to a normal string, the \n will be treated as a new line.

s = 'Hi\nHello'
print(s)

Đầu ra:

Hi
Hello

Hãy cùng xem chuỗi RAW giúp chúng ta coi việc đánh dấu dấu gạch chéo ngược như một nhân vật bình thường như thế nào.

raw_s = r'Hi\nHello'
print(raw_s)

Đầu ra:

s = 'Hi\nHello'
print(s)
0 Hãy để xem một ví dụ khác trong đó nhân vật theo sau là dấu gạch chéo ngược không có ý nghĩa đặc biệt nào.

>>> s = 'Hi\xHello'
  File "", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \xXX escape

Chúng tôi đã gặp lỗi vì Python không biết cách giải mã ‘\ x, vì nó không có ý nghĩa đặc biệt nào. Hãy để xem cách chúng ta có thể tạo cùng một chuỗi bằng các chuỗi thô.

>>> s = r'Hi\xHello'
>>> print(s)
Hi\xHello

Nếu bạn đang ở trên bảng điều khiển Python và tạo một chuỗi thô như dưới đây.

>>> r'Hi\xHello'
'Hi\\xHello'

Don Tiết bị nhầm lẫn với đầu ra có hai dấu gạch chéo ngược. Nó chỉ để hiển thị nó như một chuỗi Python bình thường, trong đó dấu gạch chéo ngược đang bị thoát ra.

Chuỗi và trích dẫn Python Raw

Khi một dấu gạch chéo ngược được theo sau bởi một trích dẫn trong một chuỗi thô, nó đã thoát ra. Tuy nhiên, dấu gạch chéo ngược cũng vẫn còn trong kết quả. Vì tính năng này, chúng tôi có thể tạo ra một chuỗi RAW của dấu gạch chéo ngược. Ngoài ra, một chuỗi thô có thể có một số ít các dấu gạch chéo ngược ở cuối. Một số chuỗi thô không hợp lệ là:

r'\'  # missing end quote because the end quote is being escaped
r'ab\\\'  # first two backslashes will escape each other, the third one will try to escape the end quote.

Hãy cùng xem xét một số ví dụ chuỗi thô hợp lệ với các trích dẫn.

raw_s = r'\''
print(raw_s)

raw_s = r'ab\\'
print(raw_s)

raw_s = R'\\\"'  # prefix can be 'R' or 'r'
print(raw_s)

Output:

\'
ab\\
\\\"

Đó là tất cả để giới thiệu nhanh chuỗi Raw Python.

Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.

'\ R có nghĩa là gì trong Python?

Trong các chuỗi Python, dấu gạch chéo ngược "\" là một nhân vật đặc biệt, còn được gọi là nhân vật "Escape".Nó được sử dụng để thể hiện các ký tự khoảng trắng nhất định: "\ t" là một tab, "\ n" là một dòng mới và "\ r" là một sự trở lại vận chuyển.carriage return.

%S có nghĩa là gì trong Python?

Biểu tượng % được sử dụng trong Python với nhiều loại dữ liệu và cấu hình.%s đặc biệt được sử dụng để thực hiện kết nối các chuỗi với nhau.Nó cho phép chúng ta định dạng một giá trị bên trong một chuỗi.used to perform concatenation of strings together. It allows us to format a value inside a string.