python_raw_string

Python Raw String

Необработанная строка Python создается путем префиксации строкового литерала символом r или R. Python raw string рассматривает обратную косую черту \ как литеральный символ. Это полезно, когда нам нужно получить строку, содержащую обратную косую черту, и не нужно, чтобы она рассматривалась как управляющий символ.

Допустим, мы хотим создать строку Hi\nHello. Если мы попытаемся присвоить ее обычной строке, то \n будет восприниматься как новая строка.

s = 'Hi\nHello'
print(s)
 
# output
Hi
Hello

В примере ниже, мы видим как raw string помогает обращаться с обратной косой чертой как с обычным символом:

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

Рассмотрим другой пример, в котором символ, перед которым стоит обратный слеш, не имеет никакого специального значения:

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

Мы получили исключение, потому что python не знает, как декодировать \x, так как он не имеет никакого специального значения. А теперь посмотрим, как мы можем создать такую же строку с помощью raw strings:

s = r'Hi\xHello'
print(s)
 
# output
Hi\xHello

Когда за обратной косой чертой следует кавычка в raw strings, она экранируется. Однако, обратная косая черта также остается в результате. Из-за этой функции мы не можем создать необработанную строку из одной обратной косой черты. Кроме того, сырая строка не может иметь нечетное количество обратных косых черт в конце. Вот некоторые из недопустимых raw strings:

r'\'  # Пропущенна закрывающая кавычка, так как кавычка после обратного слеша экранируется
r'ab\\\'  # первые два обратных слеша будут экранировать друг друга, третий будет пытаться экранировать концевую кавычку.

Давайте посмотрим на некоторые допустимые примеры необработанных строк с кавычками:

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\\
\\\"
  • python_raw_string.txt
  • Последнее изменение: 2022/11/22 14:49
  • admin