0% нашли этот документ полезным (0 голосов)
10 просмотров

Pythonlearn 06 Strings

Загружено:

cipuzik0
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
10 просмотров

Pythonlearn 06 Strings

Загружено:

cipuzik0
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PPTX, PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 33

Строки

Глава 6

Пайтон для всех


www.py4e.com
>>> str1 = "Привет"
Строковый тип данных >>> str2 = 'тебе'
>>> bob = str1 + str2
>>> print(bob)
• Строка — это последовательность символов Приветтебе
алфавита >>> str3 = '123'
>>> str3 = str3 + 1
• Строка заключается в одинарные или Traceback (most recent call
двойные кавычки: 'Привет' или "Привет" last): File "<stdin>",
line 1, in <module>
• В случае строк, символ + означает TypeError: cannot
«объединение» concatenate 'str' and 'int'
objects
• Если в строке содержатся цифры, она все >>> x = int(str3) + 1
равно остается строкой >>> print(x)
124
• Мы можем преобразовать цифры в строке в >>>
числовой тип, используя функцию int()
>>> name = input('Ваше
имя:')
Чтение и Ваше имя:Чак
>>> print(name)
преобразование Чак
>>> apple =
• Мы предпочитаем читать данные,
input('Количество:')
используя строки, а затем
Количество:100
анализировать и преобразовывать
>>> x = apple – 10
данные по мере необходимости
Traceback (most recent
• Так мы имеем больше контроля над call last): File
"<stdin>", line 1, in
ошибками и/или неправильным
<module>
вводом данных пользователем
TypeError: unsupported
• Введенные числа должны быть operand type(s) for -:
'str' and 'int'
преобразованы из строкового типа в
>>> x = int(apple) – 10
числовой
>>> print(x)
90
Заглянем внутрь строки

• Мы можем добраться до любого b a n a n a


отдельного символа внутри строки, 0 1 2 3 4 5
указав в квадратных скобках индекс
этого символа >>> fruit = 'banana'
>>> letter = fruit[1]
• Значение индекса должно быть целым >>>
a
print(letter)
числом и начинаться с нуля
>>> x = 3

• Значение индекса также может быть >>>


>>>
w = fruit[x - 1]
print(w)
выражением, которое можно вычислить n
Символ за пределами строки
• В Пайтон вы получите >>> zot = 'abc'
ошибку, попытавшись >>> print(zot[5])
добраться до элемента за Traceback (most recent call
пределами конца строки last): File "<stdin>", line
(несуществующий индекс) 1, in <module>
IndexError: string index out

• Будьте внимательны при of range


>>>
построении значений
индекс вне диапазона
индексов и срезов
У строки есть длина

b a n a n a
Встроенная функция len()
0 1 2 3 4 5
позволяет нам узнать длину
строки
>>> fruit = 'banana'
>>> print(len(fruit))
6
Функция len()
>>> fruit = 'banana' Функция представляет собой
некий сохраненный код,
>>> x = len(fruit)
который мы используем.
>>> print(x)
Функция принимает входные
6 данные и возвращает
вывод/результат.

'banana' функция 6
(число)
(строка) len()
Функция len()
>>> fruit = 'banana' Функция представляет собой
некий сохраненный код,
>>> x = len(fruit)
который мы используем.
>>> print(x)
Функция принимает входные
6 данные и возвращает
вывод/результат.
def len(inp):
blah
'banana' blah 6
(строка) for x in y:
blah
(число)
blah
Пошаговый перебор элементов строки

Используя оператор while, fruit = 'banana'


0b
переменную цикла и index = 0 1a
функцию len(), мы можем while index < len(fruit): 2n
создать цикл для доступа letter = fruit[index] 3a
print(index, letter) 4n
к каждой отдельной букве index = index + 1
в строке 5a
Пошаговый перебор элементов строки

• Цикл со счетчиком, b
использующий оператор a
for, - намного элегантнее fruit = 'banana'
for letter in fruit: n
a
• Цикл с for берет на себя print(letter)
n
управление переменной a
цикла
Пошаговый перебор элементов строки

• Цикл со счетчиком, fruit = 'banana'


for letter in fruit :
b
использующий оператор a
print(letter)
for, - намного элегантнее n
a
• Цикл с for берет на себя index = 0 n
управление переменной while index < len(fruit) :
a
цикла letter = fruit[index]
print(letter)
index = index + 1
Перебор и подсчет элементов
word = 'banana'
Перед вами простой цикл, count = 0
который перебирает каждую for letter in word :
букву в строке и подсчитывает if letter == 'a' :
сколько раз по ходу цикла count = count + 1
встречается буква 'a' print(count)
Присмотримся к оператору in
• Переменная цикла
«перемещается» по переменная Строка из 6 букв
последовательности цикла
(упорядоченному набору)

• Блок (тело) кода выполняется


for letter in 'banana' :
однократно для каждого значения
в последовательности print(letter)

• Переменная цикла поочередно


перемещается по всем значениям
в последовательности
Да Нет b a n a n a
Готово? следующая letter

print(letter)

for letter in 'banana' :


print(letter)

Переменная цикла «перемещается» по строке, блок (тело) кода


выполняется однократно для каждого значения в последовательности
Ещё операции со строками
Срез строки M o n t y P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11
• Мы также можем посмотреть на
любой непрерывный кусок строки,
>>> s = 'Monty Python'
используя оператор двоеточие :
>>> print(s[0:4])
• Второе число указывает конец Mont
среза, но не включается в него. >>> print(s[6:7])
Срез читается как: «от и до, но не P
включая»
>>> print(s[6:20])
• Если второе число превышает Python
длину строки, срез будет взят до
конца строки
Срез строки M o n t y P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11

>>> s = 'Monty Python'


Если при извлечении среза мы >>> print(s[:2])
опускаем первое или последнее Mo
число, подразумевается, что >>> print(s[8:])
пропуск — это начало или конец thon
строки соответственно
>>> print(s[:])
Monty Python
Объединение строк
>>> a = 'Привет'
Когда оператор + >>> b = a + 'тебе'
применяется к строкам, он >>> print(b)
выполняет функцию Приветтебе
«объединения» >>> c = a + ' ' + 'There'
>>> print(c)
Привет тебе
>>>
Использование оператора in в качестве
логического оператора
>>> fruit = 'banana'
• Ключевое слово in можно >>> 'n' in fruit
использовать также и для
True
проверки содержится ли одна
>>> 'm' in fruit
строка внутри другой
False
>>> 'nan' in fruit
• Выражение с in — это True
логическое выражение,
>>> if 'a' in fruit :
возвращающее True (Правда)
... print('Найдено!')
или False (Ложь). Может быть
...
использовано в выражениях с
Найдено!
оператором if
>>>
Сравнение строк
if word == 'банан':
print('Верно, бананы.')

if word < 'банан':


print('Ваше слово,' + word + ', идет перед бананом.')
elif word > 'банан':
print('Ваше слово,' + word + ', идет после банана.')
else:
print('Верно, бананы.')
Библиотека для
• В Пайтон имеется ряд
строковых функций, которые обработки строк
находятся в библиотеке для
обработки строк >>> greet = 'Привет, Боб'
>>> zap = greet.lower()
• Эти функции уже встроены в >>> print(zap)
каждую строку, мы вызываем привет, боб
их, добавляя функцию к >>> print(greet)
строковой переменной Привет, Боб
>>> print('Привет
• Эти функции не изменяют Всем'.lower())
исходную строку, а привет всем
возвращают новую с >>>
заданными изменениями
>>> stuff = 'Привет, Мир!'
>>> type(stuff)
<class 'str'>
>>> dir(stuff)
['capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust',
'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',
'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper',
'zfill']

https://docs.python.org/3/library/stdtypes.html#string-methods
Библиотека для обработки строк

str.capitalize() str.replace(old, new[, count])


str.center(width[, fillchar]) str.lower()
str.endswith(suffix[, start[, end]]) str.rstrip([chars])
str.find(sub[, start[, end]]) str.strip([chars])
str.lstrip([chars]) str.upper()
Поиск строки
b a n a n a
• Мы используем функцию find() для
поиска подстроки внутри другой 0 1 2 3 4 5
строки
>>> fruit = 'banana'
• find() находит первое появление >>> pos = fruit.find('na')
подстроки >>> print(pos)
2
• Если подстрока не найдена, find() >>> aa = fruit.find('z')
возвращает -1 >>> print(aa)
-1
• Помните, что стартовая позиция
начинается с 0
Преобразование в ЗАГЛАВНЫЕ буквы
• Можно создать копию строки >>> greet = 'Привет,
в нижнем регистре или в Боб'
верхнем регистре >>> nnn = greet.upper()
• Прежде чем искать >>> print(nnn)
ПРИВЕТ, БОБ
подстроку с помощью find(),
>>> www = greet.lower()
лучше преобразовать строку
>>> print(www)
в нижний регистр, чтобы
привет боб
искать вне зависимости от
>>>
регистра
Поиск и замена
• Функция replace()
похожа на операцию >>> greet = 'Привет, Марина'
«поиск и замена» в >>> nstr =
текстовом редакторе greet.replace(‘Марина','Карина')
>>> print(nstr)

• Она заменяет Привет, Карина


>>> nstr = greet.replace(‘р','X')
содержимое каждой >>> print(nstr)
встреченной искомой ПXивет КаXина
строки на содержимое >>>
заменяющей строки
Удаление пробелов
• Иногда бывает нужно
удалить пробелы в начале
и/или в конце строки >>> greet = ' Привет, Боб '
>>> greet.lstrip()
• lstrip() и rstrip() удаляют 'Привет, Боб '
>>> greet.rstrip()
пробелы слева и справа ' Привет, Боб'
соответственно >>> greet.strip()
'Привет, Боб'
• strip() одновременно >>>
удаляет пробелы в начале
и в конце строки
Префиксы
>>> line = 'Хорошего тебе дня!'
>>> line.startswith('Хорошего')
True
>>> line.startswith('х')
False
Разбор и
21 31 извлечение
From [email protected] Sat Jan 5 09:14:16 2008

>>> data = 'From [email protected] Sat Jan 5 09:14:16 2008'


>>> atpos = data.find('@')
>>> print(atpos)
21
>>> sppos = data.find(' ',atpos)
>>> print(sppos)
31
>>> host = data[atpos+1 : sppos]
>>> print(host)
uct.ac.za
Два вида строк
Python 2.7.10 Python 3.5.1
>>> x = ' 이광춘 ' >>> x = ' 이광춘 '
>>> type(x) >>> type(x)
<type 'str'> <class 'str'>
>>> x = u' 이광춘 ' >>> x = u' 이광춘 '
>>> type(x) >>> type(x)
<type 'unicode'> <class 'str'>
>>> >>>

В Пайтон 3 все строки — последовательность


Юникод-символов
Резюме
• Строковой тип • Операции со строками
• Чтение/Преобразование • Библиотека операций
• Индексация [] со строками

• Срез строки [2:4] • Сравнение строк

• Перебор элементов строки • Поиск внутри строк


с помощью for и while • Замена текста
• Объединение строк с • Удаление пробелов
помощью +
Авторы / Благодарности
Авторские права на эти слайды принадлежат Чарльзу Р. ...
Северансу (www.dr-chuck.com) , 2010 г., Школа Информации
Мичиганского Университета и доступны по лицензии Creative
Commons Attribution 4.0 License. Пожалуйста, сохраняйте этот
слайд во всех копиях этого документа, в соответствии с
требованиями Лицензии. Если вы внесли изменения,
добавьте свое имя или организацию в список участников на
этой странице.

Исходная разработка: Чарльз Северанс, Школа


Информации Мичиганского Университета.

Перевод выполнила Фомкина Виолетта.

… Добавьте сюда новых авторов и переводчиков

Вам также может понравиться