Строки - упорядоченные последовательности символов а так же, встроенный объект в языке Python.
В данном уроке углубимся в их изучении.
Операция - Интерпретация
S = ‘’ - Пустая строка
S = “spam’s” - Строка в кавычках
S = ‘s\np\ta\x00m’ - Экранированные последовательности
block = “””...””” - Блоки в тройных кавычках
S = r’\temp\spam’ - Не форматированные строки
S = b’spam’ - Строки байтов в версии 3.0
S = u’spam’ - Строки с символами Юникода.
Только в версии 2.6
S1 + S2, S * 3 - Конкатенация, повторение
S[i]
S[i:j] -Обращение к символу по индексу, извлечение подстроки (среза), длина
len(S)
“a %s parrot” % kind - Выражение форматирования строки
“a {0} parrot”.format(kind) - Строковый метод форматирования в 2.6 и 3.0
S.find(‘pa’) - Вызов строкового метода: поиск
S.rstrip() - Удаление ведущих и конечных пробельных символов
S.replace(‘pa’, ‘xx’) - Замена
S.split(‘,’) - Разбиение по символу-разделитлю
S.isdigit() - Проверка содержимого
S.lower() - Преобразование регистра символов
S.endswith(‘spam’) - Проверка окончания строки
‘spam’.join(strlist) - Сборка строки из списка
S.encode(‘latin-1’) - Кодирование строк Юникода.
Множество способов записи строк в программном коде:
• Строки в апострофах: ‘spa”m’
• Строки в кавычках: “spa’m”
• Строки в тройных кавычках: ‘’’... spam ...’’’ , “””... spam ...”””
• Экранированные последовательности: “s\tp\na\0m”
• Неформатированные строки: r”C:\new\test.spm”
• Строки байтов в версии 3.0: b’sp\x01am’
• Строки символов Юникода, только в версии 2.6 : u’eggs\u0020spam’
Строки в апострофах и в кавычках – это одно и то же
>>> ‘shrubbery’, “shrubbery”
(‘shrubbery’, ‘shrubbery’)
>>> ‘knight”s’, “knight’s”
(‘knight”s’, “knight’s”)
Python автоматически объединяет последовательности строковых литералов внутри выражения.
>>> title = “Meaning “ ‘of’ “ Life” # Неявная конкатенация
>>> title
‘Meaning of Life’
Экранированные последовательности представляют служебные символы
В последнем примере кавычка и апостроф внутри строк предваряются символом обратного слеша. Это частный случай более общей формы: символы обратного слеша используются для вставки специальных символов, известных как экранированные последовательности.
Экранированные последовательности позволяют вставлять в строки символы, которые сложно ввести с клавиатуры.
>>> s = ‘a\nb\tc’
\n образует единственный символ – байт, содержащий
двоичное значение кода символа новой строки в используемом наборе символов (обычно ASCII-код 10). Аналогично последовательность \t замещается символом табуляции.
>>> s
‘a\nb\tc’
>>> print(s)
a
b c
Последовательность - Назначение
\newline - Игнорируется (продолжение на новой строке)
\\ - Сам символ обратного слеша (остается один символ \)
\’ - Апостроф (остается один символ ‘)
\” - Кавычка (остается один символ “)
\a - Звонок
\b - Забой
\f - Перевод формата
\n - Новая строка (перевод строки)
\r - Возврат каретки
\t - Горизонтальная табуляция
\v - Вертикальная табуляция
\xhh - Символ с шестнадцатеричным кодом hh (не более 2 цифр)
\ooo - Символ с восьмеричным кодом ooo (не более 3 цифр)
\0 - Символ Null (не признак конца строки)
\N{id} - Идентификатор ID базы данных Юникода
\uhhhh - 16-битный символ Юникода в шестнадцатеричном представлении
\Uhhhhhhhh - 32-битный символ Юникода в шестнадцатеричном представлении
\другое - Не является экранированной последовательностью
(символ обратного слеша сохраняется)
Базовые операции:
>>> print(‘------- ...много дефисов... ---’) # 80 дефисов, сложный способ
>>> print(‘-’ * 80) # 80 дефисов, простой способ
>>> myjob = “hacker”
>>> for c in myjob: print(c, end=’ ‘), # Обход элементов строки в цикле
...
h a c k e r
>>> “k” in myjob # Найдено
True
>>> “z” in myjob # Не найдено
False
>>> ‘spam’ in ‘abcspamdef’ # Поиск подстроки, позиция не возвращается
True
>>> S = ‘spam’
>>> S[0], S[-2] # Индексация от начала или от конца
(‘s’, ‘a’)
>>> S[1:3], S[1:], S[:-1] # Получение среза: извлечение подстроки
(‘pa’, ‘pam’, ‘spa’)
>>> S = ‘abcdefghijklmnop’
>>> S[1:10:2]
‘bdfhj’
>>> S[::2]
‘acegikmo’
>>> S = ‘hello’
>>> S[::-1]
‘olleh’
>>> S = ‘abcedfg’
>>> S[5:1:-1]
‘fdec’
>>> int(“42”), str(42) # Преобразование из/в строки
(42, ‘42’)
>>> repr(42), # Преобразование в строку, как если бы она была
‘42’ # литералом в программном коде
В данном уроке углубимся в их изучении.
Операция - Интерпретация
S = ‘’ - Пустая строка
S = “spam’s” - Строка в кавычках
S = ‘s\np\ta\x00m’ - Экранированные последовательности
block = “””...””” - Блоки в тройных кавычках
S = r’\temp\spam’ - Не форматированные строки
S = b’spam’ - Строки байтов в версии 3.0
S = u’spam’ - Строки с символами Юникода.
Только в версии 2.6
S1 + S2, S * 3 - Конкатенация, повторение
S[i]
S[i:j] -Обращение к символу по индексу, извлечение подстроки (среза), длина
len(S)
“a %s parrot” % kind - Выражение форматирования строки
“a {0} parrot”.format(kind) - Строковый метод форматирования в 2.6 и 3.0
S.find(‘pa’) - Вызов строкового метода: поиск
S.rstrip() - Удаление ведущих и конечных пробельных символов
S.replace(‘pa’, ‘xx’) - Замена
S.split(‘,’) - Разбиение по символу-разделитлю
S.isdigit() - Проверка содержимого
S.lower() - Преобразование регистра символов
S.endswith(‘spam’) - Проверка окончания строки
‘spam’.join(strlist) - Сборка строки из списка
S.encode(‘latin-1’) - Кодирование строк Юникода.
Множество способов записи строк в программном коде:
• Строки в апострофах: ‘spa”m’
• Строки в кавычках: “spa’m”
• Строки в тройных кавычках: ‘’’... spam ...’’’ , “””... spam ...”””
• Экранированные последовательности: “s\tp\na\0m”
• Неформатированные строки: r”C:\new\test.spm”
• Строки байтов в версии 3.0: b’sp\x01am’
• Строки символов Юникода, только в версии 2.6 : u’eggs\u0020spam’
Строки в апострофах и в кавычках – это одно и то же
>>> ‘shrubbery’, “shrubbery”
(‘shrubbery’, ‘shrubbery’)
>>> ‘knight”s’, “knight’s”
(‘knight”s’, “knight’s”)
Python автоматически объединяет последовательности строковых литералов внутри выражения.
>>> title = “Meaning “ ‘of’ “ Life” # Неявная конкатенация
>>> title
‘Meaning of Life’
>>> ‘knight\’s’, “knight\”s”
(“knight’s”, ‘knight”s’)
Экранированные последовательности представляют служебные символы
В последнем примере кавычка и апостроф внутри строк предваряются символом обратного слеша. Это частный случай более общей формы: символы обратного слеша используются для вставки специальных символов, известных как экранированные последовательности.
Экранированные последовательности позволяют вставлять в строки символы, которые сложно ввести с клавиатуры.
>>> s = ‘a\nb\tc’
двоичное значение кода символа новой строки в используемом наборе символов (обычно ASCII-код 10). Аналогично последовательность \t замещается символом табуляции.
>>> s
‘a\nb\tc’
>>> print(s)
a
b c
Последовательность - Назначение
\newline - Игнорируется (продолжение на новой строке)
\\ - Сам символ обратного слеша (остается один символ \)
\’ - Апостроф (остается один символ ‘)
\” - Кавычка (остается один символ “)
\a - Звонок
\b - Забой
\f - Перевод формата
\n - Новая строка (перевод строки)
\r - Возврат каретки
\t - Горизонтальная табуляция
\v - Вертикальная табуляция
\xhh - Символ с шестнадцатеричным кодом hh (не более 2 цифр)
\ooo - Символ с восьмеричным кодом ooo (не более 3 цифр)
\0 - Символ Null (не признак конца строки)
\N{id} - Идентификатор ID базы данных Юникода
\uhhhh - 16-битный символ Юникода в шестнадцатеричном представлении
\Uhhhhhhhh - 32-битный символ Юникода в шестнадцатеричном представлении
\другое - Не является экранированной последовательностью
(символ обратного слеша сохраняется)
>>> S = “s\tp\na\x00m”
>>> S
‘s\tp\na\x00m’
>>> len(S)
7
>>> print(S)
s p
a m
-----------------------------------------------------------------
-----------------------------------------------------------------
>>> x = “C:\py\code” # Символ \ сохраняется в строке
>>> x
‘C:\\py\\code’
>>> len(x)
10
-----------------------------------------------------------------
>>> path = r’C:\new\text.dat’
>>> path # Показать, как интерпретатор представляет эту строку
‘C:\\new\\text.dat’
>>> print(path) # Более дружественный формат представления
C:\new\text.dat
>>> len(path) # Длина строки
15
>>> len(‘abc’) # Длина: число элементов
3
>>> ‘abc’ + ‘def’ # Конкатенация: новая строка
‘abcdef’
>>> ‘Ni!’ * 4 # Повторение: подобно “Ni!” + “Ni!” + ...
‘Ni!Ni!Ni!Ni!’
>>> print(‘------- ...много дефисов... ---’) # 80 дефисов, сложный способ
>>> print(‘-’ * 80) # 80 дефисов, простой способ
>>> myjob = “hacker”
>>> for c in myjob: print(c, end=’ ‘), # Обход элементов строки в цикле
...
h a c k e r
>>> “k” in myjob # Найдено
True
>>> “z” in myjob # Не найдено
False
>>> ‘spam’ in ‘abcspamdef’ # Поиск подстроки, позиция не возвращается
True
>>> S = ‘spam’
>>> S[0], S[-2] # Индексация от начала или от конца
(‘s’, ‘a’)
>>> S[1:3], S[1:], S[:-1] # Получение среза: извлечение подстроки
(‘pa’, ‘pam’, ‘spa’)
>>> S = ‘abcdefghijklmnop’
>>> S[1:10:2]
‘bdfhj’
>>> S[::2]
‘acegikmo’
>>> S = ‘hello’
>>> S[::-1]
‘olleh’
>>> S = ‘abcedfg’
>>> S[5:1:-1]
‘fdec’
>>> int(“42”), str(42) # Преобразование из/в строки
(42, ‘42’)
>>> repr(42), # Преобразование в строку, как если бы она была
‘42’ # литералом в программном коде
Функция int преобразует строку в число, а функция str преобразует число в строковое представление.
>>> print(str(‘spam’), repr(‘spam’))
(‘spam’, “’spam’”)
>>> S = “42”
>>> I = 1
>>> S + I
>>> int(S) + I # Операция сложения
43
>>> S + str(I) # Операция конкатенации
‘421’
ord – она возвращает фактическое числовое значение соответствующего
байта в памяти. Обратное преобразование выполняется с помощью функции chr, она получает целочисленный код ASCII и преобразует его в соответствующий символ:
>>> ord(‘s’)
115
>>> chr(115)
‘s’
----------------------
>>> int(‘1101’, 2) # Преобразовать двоичное представление в целое число
13
>>> bin(13) # Преобразовать целое число в двоичное представление
‘0b1101’
-----------------------
>>> S = S + ‘SPAM!’ # Чтобы изменить строку, нужно создать новую
>>> S
‘spamSPAM!’
>>> S = S[:4] + ‘Burger’ + S[-1]
>>> S
‘spamBurger!’
>>> S = ‘splot’
>>> S = S.replace(‘pl’, ‘pamal’)
>>> S
‘spamalot’
Изменение строк
Вспомните термин "неизменяемая последовательность". "Неизменяемая" - означает, что вы не можете изменить содержимое самой строки в памяти(то есть невозможно изменить элемент строки, если выполнить присваивание по индексу):
>>> S = 'SPAM'
>>> S[0] = 'X'
Error!
В Python, изменение строк делается созданием новой строки, с помощью конкатенации и извлечение подстроки. Затем, если необходимо, присваиваем результат к первоначальному имени.
Форматирование строк
Чтобы отформатировать строку, требуется:
1. Слева от оператора % указать строку формата, содержащую один или более
спецификаторов формата, каждый из которых начинается с символа % (на-
пример, %d).
2. Справа от оператора % указать объект (или объекты, в виде кортежа), значе-
ние которого должно быть подставлено на место спецификатора (или специ-
фикаторов) в левой части выражения.
Например:
>>> ‘That is %d %s bird!’ % (1, ‘dead’) # Выражение форматирования
That is 1 dead bird!
Спецификаторы формата
>>> x = 1234
>>> res = “integers: ...%d...%-6d...%06d” % (x, x, x)
>>> res
‘integers: ...1234...1234 ...001234’
Форматирование строк
Чтобы отформатировать строку, требуется:
1. Слева от оператора % указать строку формата, содержащую один или более
спецификаторов формата, каждый из которых начинается с символа % (на-
пример, %d).
2. Справа от оператора % указать объект (или объекты, в виде кортежа), значе-
ние которого должно быть подставлено на место спецификатора (или специ-
фикаторов) в левой части выражения.
Например:
>>> ‘That is %d %s bird!’ % (1, ‘dead’) # Выражение форматирования
That is 1 dead bird!
Спецификаторы формата
Спецификатор - Назначение
s - Строка (для объекта любого другого типа будет выполнен
вызов функции str(X), чтобы получить строковое представ-
ление объекта)
r - s, но использует функцию repr, а не str
c - Символ
d - Десятичное (целое) число
i - Целое число
u - То же, что и d (устарел: больше не является представлени-
ем целого без знака)
o - Восьмеричное целое число
x - Шестнадцатеричное целое число
X - x, но шестнадцатеричные цифры возвращаются в верхнем
регистре
e - Вещественное число в экспоненциальной форме
E - e, но алфавитные символы возвращаются в верхнем
регистре
f - Вещественное число в десятичном представлении
F - Вещественное число в десятичном представлении
g - Вещественное число e или f
G - Вещественное число E или а
% - Символ %
>>> x = 1234
>>> res = “integers: ...%d...%-6d...%06d” % (x, x, x)
>>> res
‘integers: ...1234...1234 ...001234’
Пример форматирования из словаря:
>>> “%(n)d %(x)s” % {“n”:1, “x”:”spam”}
‘1 spam’
Комментариев нет:
Отправить комментарий