Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Функции и методы строк
Для применения методов строк применяется широко применяемая в программировании,.т.н. «точечная нотация» вида:
x.upper()
Говоря по другому, перед именем метода указывается имя объекта строки, за которым следует точка. Так как строки в Python являются неизменяемыми объектами,
методы строк используются только для получения своего возвращаемого значения,
они никак не изменяют объект строки, с которым они связаны.
Одними из наиболее употребляемых являются методы строк split() и join().
split() возвращает список подстрок строки;
join() берет список строк и объединяет их в одну строку, вставляя исходную
строку между каждой парой элементов.
Можно сказать что эти методы выполняют противоположные действия, поэтому
они удачно взаимодополняют друг друга.
Метод split() по умолчанию использует пробел (точнее – любой пробельный
символ) в качестве разделителя.
Пример 5-1.
>>> s="Это просто текст"
>>> s.split()
['Это', 'просто', 'текст']
>>>
Как видим, результатом метода split() является список.
В качестве разделителя можно использовать не только пробел, по и другой символ или последовательность символов.
Пример 5-2.
>>> s="Это просто текст"
>>> s.split(",")
['Это просто текст']
1
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
>>>
Здесь в результате мы получили список из 1 элемента. Разбиения строки не произошло, так как исходная строка не содержит символ разделителя ",".
Пример 5-3.
t="Скажите, это всё, что возможно ?"
t.split(",")
['Скажите', ' это всё', ' что возможно ?']
>>>
Пример 5-4.
>>> x = "Mississippi"
>>> x.split("ss")
['Mi', 'i', 'ippi']
Также, в методе split() может быть задан необязательный параметр maxsplit, который задаёт максимальное число разбиваемых элементов + 1. Т.е. если указать параметр maxsplit=1 , то получим 2 элемента списка, если maxsplit=2, то 3 и т.д.
В том случае, когда указывается maxsplit=-1 (минус 1), это означает, что нет
ограничений на число разделяемых частей.
Пример 5-5.
>>> a="Сентябрь Октябрь Ноябрь Декабрь"
>>> a.split(' ',2)
['Сентябрь', 'Октябрь', 'Ноябрь Декабрь'] # 3 части
>>> a.split(' ',3)
['Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'] # 4 части
>>> a.split(' ',1)
['Сентябрь', 'Октябрь Ноябрь Декабрь'] # 2 части
>>> a.split(' ',0)
['Сентябрь Октябрь Ноябрь Декабрь'] # 1 часть
>>> a.split(' ',-1)
['Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'] # Без ограничений
>>>
2
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Чтобы задать второй аргумент, и при этом использовать первый аргумент по
умолчанию, можно задать первый параметр None, при этом будет использоваться разделитель по умолчанию (т.е. пробельный символ).
Пример 5-6.
>>> a="Сентябрь Октябрь Ноябрь Декабрь"
>>> a.split(None,2)
['Сентябрь', 'Октябрь', 'Ноябрь Декабрь']
В том случае, когда требуется ввести список чисел с клавиатуры, можно использовать метод split() в такой комбинации с другими методами:
Пример 5-7.
>>>
1 2
>>>
[1,
A = list(map(int, input().split()))
3 4
A
2, 3, 4]
или, второй вариант,
Пример 5-8.
>>>
1 2
>>>
[1,
A = [int(s) for s in input().split()]
3 4
A
2, 3, 4]
Метод join() позволяет объединять строки (список строк) и получить в результате одну строку.
Пример 5-9.
>>> " ".join(["join", "вставляет", "пробелы", "между", "элементами"])
'join вставляет пробелы между элементами'
Пример 5-10.
3
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
A = ['red', 'green', 'blue']
print(' '.join(A))
print(''.join(A))
print('***'.join(A))
Получим:
red green blue
redgreenblue
red***green***blue
Для объединения элементов списка может использоваться даже пустая строка:
>>> "".join(["Separated", "by", "nothing"])
'Separatedbynothing'
Если список состоит из чисел, а не строк, то применение метода join() может привести
к ошибке (исключению) вида TypeError.
>>> A=[1,2,3,4]
>>> print(' '.join(A))
Traceback (most recent call last):
File "", line 1, in
print(' '.join(A))
TypeError: sequence item 0: expected str instance, int found
>>>
Чтобы избежать такой ошибки, нужно использовать преобразование в строку функцией str(), комбинируя с методом map()
>>> A=[1,2,3,4]
>>> print(' '.join(map(str, A)))
1 2 3 4
>>>
4
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Преобразование строк в числа
Вводимые символы (будь то с клавиатуры или из текстового файла) представляются в строковом виде. Чтобы преобразовать их во внутреннее числовое представление, используются стандартные функции :
int() – для преобразования в целое число;
float() – для преобразования в вещественное число.
>>> float('123.456')
123.456
Если преобразование невозможно, произойдёт исключение типа ValueError.
>>> float('abc')
Traceback (most recent call last):
File "", line 1, in
float('abc')
ValueError: could not convert string to float: 'abc'
>>>
Можно преобразовывать числа не только в привычной десятичной системе счисления,
но и в других системах (двоичной, шестнадцатеричной и т.д.).
Пример 5-11.
print(int('2345',8))
print(int('AC12',16))
Получим десятичные значения
1253
44050
5
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Удаление лишних пробелов из строки
Здесь полезны следующие методы:
strip() - удаляет все пробелы в начале и в конце строки;
lstrip() - удаляет все пробелы в начале строки;
rstrip() - удаляет все пробелы в конце строки.
Символы табуляции также относятся к удаляемым данными методами.
Пример 5-12.
>>> x = " Hello, World\t\t "
>>> x.strip()
'Hello, World'
Также можно изменить состав символов, удаляемых strip, rstrip и lstrip, передавая
константу с удаляемыми символами в дополнительном параметре.
Пример 5-13.
x = "www.python.org"
print(x)
print(x.strip("w")) # Отсекает все буквы w
print(x.strip("gor")) # Отсекает все буквы g, o и r
print(x.strip(".gorw")) # Отсекает все точки, буквы g, o, r и w
print(x.lstrip(".gorw")) # Отсекает СЛЕВА все точки, буквы g,
o, r и w
Результат:
www.python.org
.python.org
www.python.
python
python.org
6
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Изменение строк
Строки являются неизменяемыми, но объекты строк поддерживают ряд методов, которые возвращают новую строку — модифицированную версию исходной строки.
Метод replace() заменяет все вхождения одной строки на другую. Формат:
s.replace(old, new)
— заменить в строке s все вхождения подстроки old на подстроку new.
Пример 5-14.
>>> s="Всё плохо, всё очень плохо"
>>> s.replace("плохо","хорошо")
'Всё хорошо, всё очень хорошо'
Также можно использовать необязательный третий параметр, задающий число замен.
Пример 5-14.
>>> s="Всё плохо, всё очень плохо"
>>> s.replace("плохо","хорошо",1)
'Всё хорошо, всё очень плохо'
>>>
Наиболее часто применяемые функции и методы строк приведены в таблице 5-1.
Таблица 5.1. Распространённые операции со строками
Операция
Описание
+
Объединяет две строки
*
Дублирует строку
upper
Пример
x = "hello " + "world"
x = " " * 20
Преобразует строку к верхне-
x.upper()
му регистру
lower
Преобразует строку к нижнему
x.lower()
регистру
title
Преобразует первую букву
7
h x.title()
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
каждого слова в строке к верхнему регистру
find, index
rfind, rindex
Ищет заданную подстроку в
x.find(y)
строке
x.index(y)
Ищет заданную подстроку в
x.rfind(y)
строке, начиная с конца строки
startswith,
endswith
x.rindex(y)
Проверяет начало или конец
x.startswith(y)
строки на совпадение с задан-
x.endswith(y)
ной подстрокой
replace
Заменяет подстроку новой
x.replace(y, z)
строкой
strip, rstrip,
Удаляет пропуски или другие
x.strip()
символы в концах строки
lstrip
encode
Преобразует строку Юникода
x.encode("utf_8")
в объект bytes
Для работы со строками также могут применяться такие эффективные инструменты,
как регулярные выражения (RegEx), которые будут рассматриваться в дальнейшем.
Словари (dict)
Словари в Python – это неупорядоченные коллекции произвольных объектов с
доступом по ключу. Их также называют ассоциативными массивами или хештаблицами. Для задания словарей используют фигурные скобки.
Таким образом, словарь представляет собой набор пар
Ключ - Значение
В словарях в качестве ключей могут использоваться только неизменяемые объекты (как строки), а в качестве значений можно использовать как неизменяемые, так
8
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
и изменяемые объекты. Точнее говоря, в качестве ключей должны использоваться
только простые объекты.
Создать словарь можно несколькими способами.
1) В качестве литерала
d = {'name':'Иван', 'surname':'Петров','age':20}
2) Через функцию dict()
>>> dd = dict(lang="Python",subj="Programming")
>>> dd
{'lang': 'Python', 'subj': 'Programming'}
>>> print(dd['lang'])
Python
Если сейчас задать
print(dd[0])
то мы получим ошибку вида KeyError, так как к элементам словаря можно обращаться
только по значениям ключей, а не по индексам.
3) С помощью метода (функции) fromkeys()
>>> d2 = dict.fromkeys(['a','b','c'],2)
>>> d2
{'a': 2, 'b': 2, 'c': 2}
4) С помощью генераторов, аналогичных генераторам списков.
>>> d = {a: a ** 2 for a in range(7)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}
9
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
Пример 5-15.
# Пример 5-15 Работа со словарём
ab = { 'Маша' : 'masha@gmail.com',
'Миша' : 'mike@yandex.ru',
'Игорь' : 'igor@mail.ru',
'Даша' : 'dasha@bk.ru'
}
print("Адрес Маши:", ab['Маша'])
# Удаление пары ключ-значение
del ab['Игорь']
print('\nВ адресной книге {0} контактов\n'.format(len(ab)))
for name, address in ab.items():
print('Контакт {0} с адресом {1}'.format(name, address))
# Добавление пары ключ-значение
ab['Антон'] = 'anton@rambler.ru'
if 'Антон' in ab:
print("\nАдрес Антона:", ab['Антон'])
Вывод.
Адрес Маши: masha@gmail.com
В адресной книге 3 контактов
Контакт Маша с адресом masha@gmail.com
Контакт Миша с адресом mike@yandex.ru
Контакт Даша с адресом dasha@bk.ru
Адрес Антона: anton@rambler.ru
Методы словарей
dict.clear() - очищает словарь.
dict.copy() - возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) - создает словарь с ключами из seq и значением
value (по умолчанию None).
dict.get(key[, default]) - возвращает значение ключа, но если его нет, не исключение, а возвращает default (по умолчанию None).
dict.items() - возвращает пары (ключ, значение).
dict.keys() - возвращает ключи в словаре.
dict.pop(key[, default]) - удаляет ключ и возвращает значение. Если ключа нет, возвращает
default (по умолчанию бросает исключение).
10
Объектно-ориентированный анализ
и программирование. Лекция 2019 – 5 .
dict.popitem() - удаляет и возвращает пару (ключ, значение). Если словарь пуст, возвращает исключение KeyError. Следует помнить, что словари неупорядочены.
dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а создаёт ключ с значением default (по умолчанию None).
dict.update([other]) - обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() - возвращает значения в словаре.
Пример 5-16.
# Пример 5-16 Методы словаря
ab = { 'Маша' : 'masha@gmail.com',
'Миша' : 'mike@yandex.ru',
'Игорь' : 'igor@mail.ru',
'Даша' : 'dasha@bk.ru'
}
print(dict.keys(ab))
print(dict.values(ab))
print(dict.items(ab))
Вывод
dict_keys(['Маша', 'Миша', 'Игорь', 'Даша'])
dict_values(['masha@gmail.com', 'mike@yandex.ru',
'igor@mail.ru', 'dasha@bk.ru'])
dict_items([('Маша', 'masha@gmail.com'), ('Миша',
'mike@yandex.ru'), ('Игорь', 'igor@mail.ru'), ('Даша',
'dasha@bk.ru')])
>>>
11