In []:
S = ‘’ Пустая строка
S = “spam’s” Строка в кавычках
S = ‘s\np\ta\x00m’ Экранированные последовательности block = “””...””” Блоки в тройных кавычках
S = r’\temp\spam’ Неформатированные строки
S = b’spam’ Строки байтов в версии 3.0 (глава 36)
S = u’spam’ Строки с символами Юникода. Только в версии 2.6 (глава 36)
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’) Кодирование строк Юникода
Экранированные последовательности¶
In [4]:
s = 'a\nb\tc'
print s
In [5]:
len(s)
Out[5]:
In []:
Последовательность Назначение
\newline Игнорируется (продолжение на новой строке)
\\ Сам символ обратного слеша (остается один символ \)
\’ Апостроф (остается один символ ‘)
\” Кавычка (остается один символ “)
\a Звонок
\b Забой
\f Перевод формата
\n Новая строка (перевод строки)
\r Возврат каретки
\t Горизонтальная табуляция
\v Вертикальная табуляция
\xhh Символ с шестнадцатеричным кодом hh (не более 2 цифр)
\ooo Символ с восьмеричным кодом ooo (не более 3 цифр)
\0 Символ Null (не признак конца строки)
\N{id} Идентификатор ID базы данных Юникода
\uhhhh 16-битный символ Юникода в шестнадцатеричном представлении
\Uhhhhhhhh 32-битный символ Юникода в шестнадцатеричном представленииa
\другое Не является экранированной последовательностью (символ обратного слеша сохраняется)
In [7]:
s = 'a\0b\0c'
s
Out[7]:
In [8]:
len(s)
Out[8]:
В языке Python нулевой байт (символ null) не является признаком завершения строки, как в языке C. Интерпретатор просто сохраняет в памяти как текст самой строки, так и ее длину. Фактически в языке Python вообще нет символа, который служил бы признаком завершения строки.
Ниже приводится строка, полностью состоящая из экранированных кодов, – двоичные значения 1 и 2 (записаны в восьмеричной форме), за которыми следует двоичное значение 3 (записано в шестнадцатеричной форме):
Ниже приводится строка, полностью состоящая из экранированных кодов, – двоичные значения 1 и 2 (записаны в восьмеричной форме), за которыми следует двоичное значение 3 (записано в шестнадцатеричной форме):
In [9]:
s = '\001\002\x03'
s
Out[9]:
In [10]:
len(s)
Out[10]:
In [11]:
S = "s\tp\na\x00m"
S
Out[11]:
In [13]:
len(S)
Out[13]:
In [14]:
print S
In [15]:
print (S)
In [16]:
x = 'C:\py\code' # Символ \ сохраняется в строке
x
Out[16]:
In [17]:
len(x)
Out[17]:
Неформатированные строки подавляют экранирование¶
In []:
myfile = open(‘C:\new\text.dat’, ‘w’) # последовательность \n интерпретируется как символ новой строки,
#а последовательность \t замещается символом табуляции
In [18]:
myfile = open(r'C:\new\text.dat', 'w') # не забывайте добавлять символ r
In []:
myfile = open(r'C:\\new\\text.dat', 'w')
In [19]:
'abc' + 9
Строки в действии¶
In [20]:
'abc' + 'de' # Конкатенация: новая строка
Out[20]:
In [21]:
'Ni!' * 4 # Повторение: подобно “Ni!” + “Ni!” + ...
Out[21]:
In [25]:
myjob = 'hacker'
for c in myjob: print(c+' '), # Обход элементов строки в цикле ...в 3 версии print(c, end=’ ‘)
In [27]:
"k" in myjob # Найдено
Out[27]:
In [28]:
'spam' in 'abcspamdef' # Поиск подстроки, позиция не возвращается
Out[28]:
Доступ по индексам и извлечение подстроки¶
In [29]:
from IPython.display import Image
Image(filename='C:\\Users\\kiss\\Pictures\\for_blogs\\py_str.PNG')
Out[29]:
In [30]:
S = 'spam'
S[0], S[-2] # Индексация от начала или от конца
Out[30]:
In [31]:
S[1:3], S[1:], S[:-1] # Получение среза: извлечение подстроки
Out[31]:
Первый элемент имеет смещение 0
• Отрицательные индексы определяют смещения в обратном порядке – от конца, или справа.
• Выражение S[0] извлекает первый элемент.
• Выражение S[-2] извлекает второй с конца элемент (так же, как и выражение S[len(S)-2]).
• Операция извлечения подстроки (S[i:j]) извлекает непрерывный раздел последовательности:
• Элемент с индексом, равным верхней границе, не включается в срез.
• Если границы не указаны, по умолчанию они принимаются равными 0 и длине последовательности.
• Выражение S[1:3] извлекает элементы со смещениями от 1 до 3 (не включая элемент со смещением 3).
• Выражение S[1:] извлекает элементы, начиная со смещения 1 и до конца (длина последовательности).
• Выражение S[:3] извлекает элементы, начиная со смещения 0 и до 3 (не включая его).
• Выражение S[:-1] извлекает элементы, начиная со смещения 0 и до последнего (не включая его).
• Выражение S[:] извлекает элементы, начиная со смещения 0 и до конца, – это эффективный способ создать поверхностную копию последовательности S.
• Отрицательные индексы определяют смещения в обратном порядке – от конца, или справа.
• Выражение S[0] извлекает первый элемент.
• Выражение S[-2] извлекает второй с конца элемент (так же, как и выражение S[len(S)-2]).
• Операция извлечения подстроки (S[i:j]) извлекает непрерывный раздел последовательности:
• Элемент с индексом, равным верхней границе, не включается в срез.
• Если границы не указаны, по умолчанию они принимаются равными 0 и длине последовательности.
• Выражение S[1:3] извлекает элементы со смещениями от 1 до 3 (не включая элемент со смещением 3).
• Выражение S[1:] извлекает элементы, начиная со смещения 1 и до конца (длина последовательности).
• Выражение S[:3] извлекает элементы, начиная со смещения 0 и до 3 (не включая его).
• Выражение S[:-1] извлекает элементы, начиная со смещения 0 и до последнего (не включая его).
• Выражение S[:] извлекает элементы, начиная со смещения 0 и до конца, – это эффективный способ создать поверхностную копию последовательности S.
Расширенная операция извлечения подстроки: третий предел¶
В версии Python 2.3 в операцию извлечения подстроки была добавлена поддержка необязательного третьего индекса, используемого как шаг (иногда называется как шаг по индексу). Величина шага добавляется к индексу каждого извлекаемого элемента.
In [32]:
S = '0123456789'
S[1:10:2]
Out[32]:
Можно также использовать отрицательное значение шага. Например, выражение “hello”[::-1] вернет новую строку “olleh”.
In [33]:
S='hello'
S[::-1]
Out[33]:
Пропуск элементов и изменение порядка их следования – это наиболее типичные случаи использования операции получения среза с тремя пределами.
In [34]:
# File echo.py
import sys
print sys.argv
In []:
Преобразование строк¶
In [36]:
int("42"), str(42) # Преобразование из/в строки
Out[36]:
In [37]:
repr(42) # Преобразование в строку, как если бы она была литералом в программном коде
Out[37]:
Преобразование кодов символов¶
In []:
In []:
S.capitalize() S.ljust(width [, fill])
S.center(width [, fill])) S.lower()
S.count(sub [, start [, end]]) S.lstrip([chars])
S.encode([encoding [,errors]]) S.maketrans(x[, y[, z]])
S.endswith(suffix [, start [,end]])
S.partition(sep)
S.expandtabs([tabsize]) S.replace(old, new [, count])
S.find(sub [, start [, end]]) S.rfind(sub [,start [,end]])
S.format(fmtstr, *args, **kwargs) S.rindex(sub [, start [, end]])
S.index(sub [, start [, end]]) S.rjust(width [, fill])
S.isalnum() S.rpartition(sep)
S.isalpha() S.rsplit([sep[, maxsplit]])
S.isdecimal() S.rstrip([chars])
S.isdigit() S.split([sep [,maxsplit]])
S.isidentifier() S.splitlines([keepends])
S.islower() S.startswith(prefix [, start [, end]])
S.isnumeric() S.strip([chars])
S.isprintable() S.swapcase()
S.isspace() S.title()
S.istitle() S.translate(map)
S.isupper() S.upper()
S.join(iterable) S.zfill(width)
In [42]:
help(S.split)
Обратите внимание, что ни один из строковых методов не поддерживает шаблоны, – для обработки текста с использованием шаблонов необходимо использовать модуль re, входящий в состав стандартной библиотеки языка Python¶
In []:
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 или а
% Символ %
Форматирование строк из словаря¶
In [43]:
'%(n)d %(x)s' % {'n':1, 'x':'spam'}
Out[43]:
In [45]:
reply = """ # Шаблон с замещаемыми спецификаторами формата
Greetings...
Hello %(name)s!
Your age squared is %(age)s
"""
values = {'name': 'Bob', 'age': 40} # Подготовка фактических значений
print reply % values # Подстановка значений
In [46]:
food = "spam"
age = 40
vars()
Out[46]:
In [47]:
"%(age)d %(food)s" % vars()
Out[47]:
Комментариев нет:
Отправить комментарий