Другие функции и методы строк
Работе со строками. Функции и методы строк.
Базовые операции
· Конкатенация (сложение)
>>>S1 = 'spam'>>>S2 = 'eggs'>>> print(S1 + S2)'spameggs'· Дублирование строки
>>> print('spam' * 3)spamspamspam· Длина строки (функция len)
>>>len('spam')4· Доступ по индексу
>>>S = 'spam'>>>S[0]'s'>>>S[2]'a'>>>S[-2]'a'Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
· Извлечение среза
Оператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй - длине строки.
>>>s = 'spameggs'>>>s[3:5]'me'>>>s[2:-2]'ameg'>>>s[:6]'spameg'>>>s[1:]'pameggs'>>>s[:]'spameggs'Кроме того, можно задать шаг, с которым нужно извлекать срез.
>>>s[::-1]'sggemaps'>>>s[3:5:-1]''>>>s[2::2]'aeg'Другие функции и методы строк
При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
>>>s = 'spam'>>>s[1] = 'b'Traceback (most recent call last): File "", line 1, in s[1] = 'b'TypeError: 'str' object does not support item assignment>>>s = s[0] + 'b' + s[2:]>>>s'sbam'Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Почти любой тип можно привести к строке с помощью функции (конструктора) str.
>>> str(5)
'5'
>>> str(2.4)
'2.4'
>>> str(None)
'None'
>>> str([2, 3, 4])
'[2, 3, 4]'
>>> str(Exception)
"<class 'Exception'>"
Обратную операцию (преобразование строки в число) можно произвести с помощью int и float. Причём принимают они не только строки, но и байты.
>>> int(b"5")
5
>>> int("5")
5
>>> int("-28")
-28
>>> float("-24.6")
-24.6
>>> float("-3e11")
-300000000000.0
>>> float("0.3")
0.3
С ними можно работать как с массивами. Причём, если str по индексу возвращает символ, то bytes- число, и для преобразования его в символ - воспользоваться функцией chr.
>>> b[0]
97
>>> chr(b[0])
'a'
>>> u[0]
'a'
Диапазоны тоже работают. Отрицательный индекс означает отсчет с конца.
>>> b[0:2]
b'a,'
>>> b[2:4]
b'B,'
>>> b[1:4]
b',B,'
>>> u[1:4]
',B,'
>>> b[-1]
68
>>> b[:-1]
b'a,B,c,'
>>> b[:-2]
b'a,B,c'
>>> b[1:]
b',B,c,D'
>>> b[2:]
b'B,c,D'
count считает, сколько раз указанная строка находится внутри строки.
>>> u.count("a")
1
>>> u.count("A")
0
>>> b.count(b",")
3
decode у bytes преобразует байты в текст в соответствии с заданной кодировкой.
>>> ub = b.decode("utf-8")
>>> ub
'a,B,c,D'
>>> type(ub)
<class 'str'>
encode у str преобразует текст в байты.
>>> bu = u.encode("utf-8")
>>> bu
b'a,B,c,D'
>>> type(bu)
<class 'bytes'>
endswith проверяет, оканчивается ли строка/байты указанной строкой/байтами.
>>> b.endswith(b"C,d")
False
>>> b.endswith(b"c,D")
True
findищет первое вхождение указанной строки или байтов в строке или байте. Возвращает позицию (счёт с 0) или -1, если ничего не нашлось. rfind— ищет с конца строки.
>>> b.find(b"c")
4
>>> u.rfind("c")
4
join— очень полезная функция. Она принимает массив и складывает все строки из него в одну большую строку, и разделителем между элементами является сама строка, из которой вызвали функцию.
>>> sep = ", "
>>> arr = ["Саша", "Женя", "Петя", "Вася"]
>>> sep.join(arr)
'Саша, Женя, Петя, Вася'
>>> ";".join( ["1","2"] )
'1;2'
lowerи upper переводят в нижний и верхний регистр соответственно. Для типа bytes будет работать только с английскими буквами.
>>> b.lower()
b'a,b,c,d'
>>> u.upper()
'A,B,C,D'
replace заменяет в строке одну подстроку на другую.
>>> u.replace("a", "Ы")
'Ы,B,c,D'
>>> b.replace(b",", b" or ")
b'a or B or c or D'
rjustпозволяет привести короткую строку к нужной длине путём добавления перед ней пробелов или указанного символа. Для заполнения нулями можно использовать функцию zfill.
>>> tm = "18:02:"
>>> sec = "6"
>>> tm + sec
'18:02:6'
>>> tm + sec.rjust(2, "0")
'18:02:06'
>>> tm + sec.zfill(2)
'18:02:06'
>>> b.rjust(20)
b' a,B,c,D'
splitразбивает строку на несколько по указанной строке. Можно ограничить количество разбиений. rsplit разбивает строку с обратной стороны. Возвращает массив.
>>> b.split(b",")
[b'a', b'B', b'c', b'D']
>>> u.split(",", 1)
['a', 'B,c,D']
>>> u.split(",", 2)
['a', 'B', 'c,D']
>>> u.rsplit(",", 1)
['a,B,c', 'D']
>>> u.split("а нету такой подстроки!")
['a,B,c,D']
Таблица типов форматирования для строк
Код | Значение |
s | Строковый |
r | Строковый, но с использованием repr, а не str |
c | Посимвольный |
d | Десятичный |
i | Целый |
u | То же, что и d (no longer unsigned) |
o | Восьмеричный |
x | Шестнадцатеричный |
X | Шестнадцатеричный в верхнем регистре |
e | Floating-point exponent, нижний регистр |
E | То же, что и e, но в верхнем регистре |
f | Floating-point decimal |
F | Floating-point decimal |
g | Floating-point e или f |
C | Floating-point E или F |
% | Символьный % |
Таблица "Функции и методы строк"
Функция или метод | Назначение |
S = 'str'; S = "str"; S = '''str'''; S = """str""" | Литералы строк |
S = "s\np\ta\nbbb" | Экранированные последовательности |
S = r"C:\temp\new" | Неформатированные строки (подавляют экранирование) |
S = b"byte" | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S[i] | Обращение по индексу |
S[i:j:step] | Извлечение среза |
len(S) | Длина строки |
S.find(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена) | Замена шаблона |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('\f'), "новая строка" ('\n'), "перевод каретки" ('\r'), "горизонтальная табуляция" ('\t') и "вертикальная табуляция" ('\v')) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip([chars]) | Удаление пробельных символов в начале строки |
S.rstrip([chars]) | Удаление пробельных символов в конце строки |
S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=" ") | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=" ") | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
<== предыдущая лекция | | | следующая лекция ==> |
Понятие о фазовом пространстве. Метод фазовой плоскости. | | | Политическая социализация |
Дата добавления: 2016-05-16; просмотров: 747;