Разделы инструкций

В сети

Пользователей: 210
Из них просматривают:
Аналоги: 90. Даташиты: 59. Инструкции: 8. Новости: 14. Остальное: 8. Программы: 1. Производители: 2. Торрент: 2. Форум: 26.
Участников: 2
Гостей: 208

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

3.1.2. Строки

Кроме чисел, Python также может работать со строками (string), которые могут быть записаны различными путями1. Они могут быть заключены в одинарные или двойные кавычки:

 

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> ""Yes," he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

 

Длинные строковые выражения могут быть разбиты различными способами на несколько строк. Символ новой строки может быть "спрятан" с помощью обратной косой черты (' \ '), например:

 

>>> hello = "Это длинное строковое выражение, содержащее\n\
... несколько строк текста, как Вы бы это сделали в C.\n\
...     Обратите внимание, что пробелы в\
...   начале строки\nимеют значения.\n"
>>> print hello

 

Результат будет следующим:

 

Это длинное строковое выражение, содержащее
несколько строк текста, как Вы бы это сделали в C.
        Обратите внимание, что пробелы в  начале строки
имеют значения.

 

По-другому, текст может быть заключен в утроенные кавычки: """ или '''. Концы строк не нужно "прятать" при использовании утроенных кавычек, но они будут включены в текст.

 

print """
Usage: thingy [OPTIONS]
    -h Display this usage message
    -H hostname Hostname to connect to
"""

 

выведет следующее:

 

Usage: thingy [OPTIONS]
        -h Display this usage message
        -H hostname Hostname to connect to

 

Интерпретатор выводит результат строковых операций в том же виде, в котором они могли бы быть набраны: в кавычках, обходя кавычки и другие специальные символы с помощью управляющих последовательностей, начинающихся с обратной косой черты (' \ '). Текст заключается в двойные кавычки, если он не содержит двойные кавычки, во всех остальных случаях, он выводится в одинарных кавычках. Инструкция print, описанная ниже, может быть использована для вывода текста без кавычек и специальных последовательностей.

Существует также "необрабатываемый" режим ввода строк, задаваемый с помощью буквы 'r' или 'R' перед кавычками: в этом случае символ обратной косой черты также может быть использован для маскировки символов одинарной и двойной кавычек, если им предшествует нечетное число символов обратной косой черты, однако сам символ обратной косой черты остается частью строки. Даже в таком режиме строка не может заканчиваться нечетным количеством символов обратной косой черты. Необрабатываемый режим наиболее полезен в тех случаях, когда необходимо вводить значительное количество символов обратной косой черты, например, в регулярных выражениях.

Строки можно объединить (склеить) с помощью оператора + и размножить оператором *:

 

>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>'

 

Две строки, записанные друг за другом, автоматически объединяются. Первая строка в приведенном примере может быть также записана как "word = 'Help' 'A'". Такой метод работает только для строк записанных непосредственно, но не для произвольных строковых выражений.

 

>>> 'str' 'ing' # Правильно
'string'
>>> 'str'.strip() + 'ing' # Правильно
'string'
>>> 'str'.strip() 'ing' # Ошибка
  File "<stdin>", line 1
    'str'.strip() 'ing' # Ошибка
                      ^
SyntaxError: invalid syntax

 

Строка — последовательность символов с произвольным доступом, Вы можете получить любой символ строки по его индексу. Подобно C, первый символ имеет индекс 0. Нет отдельного типа для символа, символ — это просто строка единичной длины. Подобно Icon, подстрока может быть определена с помощью среза — двух индексов, разделенных двоеточием.

 

>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'

 

Строки в языке Python невозможно изменить. Попытка изменить символ в определённой позиции или подстроку вызовет ошибку:

 

>>> word[0] = 'x'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> word[:-1] = 'Splat'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

 

Индексы среза имеют полезные значения по умолчанию: опущенный первый индекс считается равным 0, опущенный второй индекс дает такой же результат, как если бы он был равен длине строки.

 

>>> word[:2] # Первые два символа
'He'
>>> word[2:] # Вся строка, кроме первых двух символов
'lpA'

 

Полезный инвариант операции среза: s[:i] + s[i:] равно s.

 

>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'

 

Срезы с вырожденными индексами обрабатываются изящно: слишком большой индекс обрабатывается, как если бы он был равен длине строки; если верхняя граница меньше нижней, то возвращается пустая строка.

 

>>> word[1:100]
'elpA'
>>> word[10:]
''
>>> word[2:1]
''

 

Индексы могут иметь отрицательные значения, для отсчета с конца:

 

>>> word[-1] # Последний символ
'A'
>>> word[-2] # Предпоследний символ
'p'
>>> word[-2:] # Последние два символа
'pA'
>>> word[:-2] # Кроме последних двух символов
'Hel'

 

Однако -0 обозначает то же самое, что и 0, то есть не будет отсчитываться с конца.

 

>>> word[-0] # (так как -0 равен 0)
'H'

 

Отрицательные индексы в срезах выходящие за пределы обрабатываются, как если бы они были равны нулю, но не пытайтесь использовать это для простых индексов (с одним элементом):

 

>>> word[-100:]
'HelpA'
>>> word[-10] # Ошибка
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

 

Лучший способ запомнить, как определяются индексы в срезе — считать их указывающими между символами, с номером 0 на левой границе первого символа. А правая граница последнего символа имеет индекс равный длине строки, например:

 

Рис

 

Первая строка чисел показывает позиции в строке, на которые указывают индексы от 0 до 5, вторая — соответствующие отрицательные индексы. Срез от i до j включает в себя все символы между краями, помеченными i и j, соответственно.

Для неотрицательных индексов длина подстроки равняется разности индексов, если они оба не выходят за пределы диапазона, например, длина подстроки word[1:3] равна 2.

Встроенная функция len() возвращает длину строки:

 

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34

Примечания:
  • В настоящее время Python считает печатными 7-битное подмножество символов. Представление же остальных символов выводится с использованием управляющих последовательностей, что делает работу в интерактивном режиме, например, с русским языком неудобной. По этой причине текст в некоторых примерах данной книги оставлен без перевода.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Не давайте детям играть с ПДУ при работающем телевизоре.

Интересно

Если у вас нет жидкого канифольного флюса, его легко изготовить самостоятельно.

Похожие инструкции