6.3.2. Числовые экранированные последовательности (восьмеричные и шестнадцатеричные) и ЮникодВы можете включить в строку любой ASCII-символ, указав восьмеричную (ос-нование 8) или шестнадцатеричную (основание 16) экранированную последо-вательность, соответствующую этому символу. Восьмеричная экранированная последовательность состоит из обратного слеша, за которым следуют три цифры, определяющие восьмеричное число; восьмеричная последовательность заменяется ASCII-символом, соответствующим этому восьмеричному коду. Шестнадцате-ричная экранированная последовательность начинается с \x вместо \ и может содержать произвольное количество шестнадцатеричных цифр. Экранированная последовательность завершается с обнаружением символа, который не является шестнадцатеричной цифрой. Например, в таблице ASCII-символов символу m соответствует десятичное значение 109, которое соответствует восьмеричному значению 155 и шестнадцатеричному значению 6D:
>>> 'm'
'm'
>>> '\155'
'm'
>>> '\x6D'
'm'
В результате обработки всех трех выражений будет получена строка, содержа-щая один символ m . Тем не менее эти формы также могут использоваться для вставки символов, не имеющих печатного представления. Например, символу новой строки \n соответствует восьмеричное значение 012 и шестнадцатеричное значение 0A:
>>> '\n'
'\n'
>>> '\012'
'\n'
>>> '\x0A'
'\n'
Так как все строки в Python 3 являются строками Юникода, они могут содержать практически любые символы из любых существующих языков. Обсуждение систе-мы Юникод выходит далеко за рамки книги, но следующие примеры показывают, что экранирование может применяться к любому символу Юникода — по числовому коду (как показано выше) или по имени символа в Юникоде: >>> unicode_a ='\N{LATIN SMALL LETTER A}'
Экранирование по имени в Юникоде >>> unicode_a
'a'
>>> unicode_a_with_acute = '\N{LATIN SMALL LETTER A WITH ACUTE}' >>> unicode_a_with_acute
'á'
>>> "\u00E1"
Экранирование по коду символа с \u
'á'
>>>
В набор символов Юникода входят все стандартные ASCII-символы .
6.3.3. Вывод и обработка строк со специальными символамиРанее я уже говорила о различиях между интерактивным вычислением результа-та выражения Python и выводом результата того же выражения функцией print . И хотя в обоих случаях используется одна и та же строка, две операции могут выдавать на экран результаты, которые выглядят по-разному. Строка, которая обрабатывается на верхнем уровне интерактивного сеанса Python, выводится со всеми специальными символами в виде восьмеричных экранированных последо-вательностей, которые ясно показывают, что содержит строка. С другой стороны, функция print передает строку прямо программе терминала, которая может интер-претировать специальные символы особым образом. Вот что произойдет со строкой, состоящей из буквы a , за которой следует символ новой строки, табуляция и b :
>>> 'a\n\tb'
'a\n\tb'
>>> print('a\n\tb')
a
b
В первом случае символы новой строки и табуляции явно выводятся в строке; во втором случае они интерпретируются как управляющие коды новой строки и табуляции.
Обычная функция print также добавляет символ новой строки в конец выводимого текста. В некоторых случаях (например, при работе со строками из файла, которые уже содержат завершающие символы новой строки) такое поведение может ока-заться нежелательным. Если передать функции print параметр end со значением "" , символ новой строки присоединяться не будет:
>>> print("abc\n")
abc
>>> print("abc\n", end="")
abc
>>>
6.4. Методы строк
Многие методы строк Python встроены в стандартный класс строк Python, поэтому они автоматически поддерживаются всеми объектами строк. Стандартный модуль string также содержит некоторые полезные константы. Модули более подробно рассматриваются в главе 10.
Для понимания этого раздела вам достаточно запомнить, что многие методы строк соединяются с объектом строки, с которым они работают, точкой ( . ) — например, x.upper() . Иначе говоря, перед именем метода указывается объект строки, за которым следует точка. Так как строки являются неизменяемыми, методы строк используются только для получения своего возвращаемого значения, они никак не изменяют объект строки, с которым они связаны.
Начнем с самых полезных и распространенных операций со строками; затем будут описаны некоторые реже встречающиеся, но все равно полезные операции. В конце этого раздела будут рассмотрены некоторые нюансы, связанные со строками. Не все методы строк документированы в этом разделе. За полным списком методов строк обращайтесь к документации.
Читать дальше