Строки в Python: методы и функции
← Часть 3
Типы данных: преобразование и базовые операции
Часть 5 →
Методы работы со списками и списковыми включениями
Текстовые переменные str в Питоне
Строковый тип str
в Python используют для работы с любыми текстовыми данными. Python автоматически определяет тип str
по кавычкам – одинарным или двойным:
>>> stroka = 'Python' >>> type(stroka) <class 'str'> >>> stroka2 = "code" >>> type(stroka2) <class 'str'>
Для решения многих задач строковую переменную нужно объявить заранее, до начала исполнения основной части программы. Создать пустую переменную str
просто:
stroka = ''
Или:
stroka2 = ""
Если в самой строке нужно использовать кавычки – например, для названия книги – то один вид кавычек используют для строки, второй – для выделения названия:
>>> print("'Самоучитель Python' - возможно, лучший справочник по Питону.SyntaxError: invalid syntax
Кроме двойных "
и одинарных кавычек '
, в Python используются и тройные '''
– в них заключают текст, состоящий из нескольких строк, или программный код:
>>> print('''В тройные кавычки заключают многострочный текст. Программный код также можно выделить тройными кавычками.''') В тройные кавычки заключают многострочный текст. Программный код также можно выделить тройными кавычками.
Длина строки len в Python
Для определения длины строки используется встроенная функция len(). Она подсчитывает общее количество символов в строке, включая пробелы:
>>> stroka = 'python' >>> print(len(stroka)) 6 >>> stroka1 = ' ' >>> print(len(stroka1)) 1
Преобразование других типов данных в строку
Целые и вещественные числа преобразуются в строки одинаково:>>> number1 = 55 >>> number2 = 55.5 >>> stroka1 = str(number1) >>> stroka2 = str(number2) >>> print(type(stroka1)) <class 'str'> >>> print(type(stroka2)) <class 'str'>
Решение многих задач значительно упрощается, если работать с числами в строковом формате. Особенно это касается заданий, где нужно разделять числа на разряды – сотни, десятки и единицы.
Сложение и умножение строк
Как уже упоминалось в предыдущей главе, строки можно складывать – эта операция также известна как конкатенация:
>>> str1 = 'Python' >>> str2 = ' - ' >>> str3 = 'самый гибкий язык программирования' >>> print(str1 + str2 + str3) Python - самый гибкий язык программирования
При необходимости строку можно умножить на целое число – эта операция называется репликацией:
>>> stroka = '*** ' >>> print(stroka * 5) *** *** *** *** ***
Подстроки
Подстрокой называется фрагмент определенной строки. Например, ‘abra’ является подстрокой ‘abrakadabra’. Чтобы определить, входит ли какая-то определенная подстрока в строку, используют оператор
in
:
>>> stroka = 'abrakadabra' >>> print('abra' in stroka) True >>> print('zebra' in stroka) False
Индексация строк в Python
Для обращения к определенному символу строки используют индекс – порядковый номер элемента. Python поддерживает два типа индексации – положительную, при которой отсчет элементов начинается с 0 и с начала строки, и отрицательную, при которой отсчет начинается с -1 и с конца:
Положительные индексы | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Пример строки | P | r | o | g | l | i | b |
Отрицательные индексы | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
Чтобы получить определенный элемент строки, нужно указать его индекс в квадратных скобках:
>>> stroka = 'программирование' >>> print(stroka[7]) м >>> print(stroka[-1]) е
Срезы строк в Python
Индексы позволяют работать с отдельными элементами строк. Для работы с подстроками используют срезы, в которых задается нужный диапазон:
>>> stroka = 'программирование' >>> print(stroka[7:10]) мир
Диапазон среза [a:b]
начинается с первого указанного элемента а
включительно, и заканчивается на последнем, не включая b
в результат:
>>> stroka = 'программa' >>> print(stroka[3:8]) грамм
Если не указать первый элемент диапазона [:b]
, срез будет выполнен с начала строки до позиции второго элемента b:
>>> stroka = 'программa' >>> print(stroka[:4]) прог
В случае отсутствия второго элемента [a:]
срез будет сделан с позиции первого символа и до конца строки:
>>> stroka = 'программa' >>> print(stroka[3:]) граммa
Если не указана ни стартовая, ни финальная позиция среза, он будет равен
>>> stroka = 'позиции не заданы' >>> print(stroka[:]) позиции не заданы
Шаг среза
Помимо диапазона, можно задавать шаг среза. В приведенном ниже примере выбирается символ из стартовой позиции среза, а затем каждая 3-я буква из диапазона:
>>> stroka = 'Python лучше всего подходит для новичков.' >>> print(stroka[1:15:3]) yoлшв
Шаг может быть отрицательным – в этом случае символы будут выбираться, начиная с конца строки:
>>> stroka = 'это пример отрицательного шага' >>> print(stroka[-1:-15:-4]) а нт
Срез [::-1]
может оказаться очень полезным при решении задач, связанных с палиндромами:
>>> stroka = 'А роза упала на лапу Азора' >>> print(stroka[::-1]) арозА упал ан алапу азор А
Замена символа в строке
Строки в Python относятся к неизменяемым типам данных. По этой причине попытка замены символа по индексу обречена на провал:
>>> stroka = 'mall' >>> stroka[0] = 'b' Traceback (most recent call last): File "<pyshell>", line 1, in <module> TypeError: 'str' object does not support item assignment
Но заменить любой символ все-таки можно – для этого придется воспользоваться срезами и конкатенацией. Результатом станет новая строка:
>>> stroka = 'mall' >>> stroka = 'b' + stroka[1:] >>> print(stroka) ball
Более простой способ «замены» символа или подстроки – использование метода replace(), который мы рассмотрим ниже.
Полезные методы строк
Python предоставляет множество методов для работы с текстовыми данными. Все методы можно сгруппировать в четыре категории:
- Преобразование строк.
- Оценка и классификация строк.
- Конвертация регистра.
- Поиск, подсчет и замена символов.
Рассмотрим эти методы подробнее.
Преобразование строк
Три самых используемых метода из этой группы – join(), split() и partition(). Метод join() незаменим, если нужно преобразовать список или кортеж в строку:
>>> spisok = ['Я', 'изучаю', 'Python'] >>> stroka = ' '.join(spisok) >>> print(stroka) Я изучаю Python
При объединении списка или кортежа в строку можно использовать любые разделители:
>>> kort = ('Я', 'изучаю', 'Django') >>> stroka = '***'.join(kort) >>> print(stroka) Я***изучаю***Django
Метод split() используется для обратной манипуляции – преобразования строки в список:
>>> text = 'это пример текста для преобразования в список' >>> spisok = text.split() >>> print(spisok) ['это', 'пример', 'текста', 'для', 'преобразования', 'в', 'список']
По умолчанию split() разбивает строку по пробелам. Но можно указать любой другой символ – и на практике это часто требуется:
>>> text = 'цвет: синий; вес: 1 кг; размер: 30х30х50; материал: картон' >>> spisok = text.split(';') >>> print(spisok) ['цвет: синий', ' вес: 1 кг', ' размер: 30х30х50', ' материал: картон']
Метод partition() поможет преобразовать строку в кортеж:
>>> text = 'Python - простой и понятный язык' >>> kort = text.partition('и') >>> print(kort) ('Python - простой ', 'и', ' понятный язык')
В отличие от split(), partition() учитывает только первое вхождение элемента-разделителя (и добавляет его в итоговый кортеж).
Оценка и классификация строк
В Python много встроенных методов для оценки и классификации текстовых данных. Некоторые из этих методов работают только со строками, в то время как другие универсальны. К последним относятся, например, функции min() и max():
>>> text = '12345' >>> print(min(text)) 1 >>> print(max(text)) 5
В Python есть специальные методы для определения типа символов. Например, isalnum() оценивает, состоит ли строка из букв и цифр, либо в ней есть какие-то другие символы:
>>> text = 'abracadabra123456' >>> print(text.isalnum()) True >>> text1 = 'a*b$ra cadabra' >>> print(text1.isalnum()) False
Метод isalpha() поможет определить, состоит ли строка только из букв, или включает специальные символы, пробелы и цифры:
>>> text = 'программирование' >>> print(text.isalpha()) True >>> text2 = 'password123' >>> print(text2.isalpha()) False
С помощью метода isdigit() можно определить, входят ли в строку только цифры, или там есть и другие символы:
>>> text = '1234567890' >>> print(text.isdigit()) True >>> text2 = '123456789o' >>> print(text2.isdigit()) False
Поскольку вещественные числа содержат точку, а отрицательные – знак минуса, выявить их этим методом не получится:
>>> text = '5.55' >>> print(text.isdigit()) False >>> text1 = '-5' >>> print(text1.isdigit()) False
Если нужно определить наличие в строке дробей или римских цифр, подойдет метод isnumeric():
>>> text = '½⅓¼⅕⅙' >>> print(text.isdigit()) False >>> print(text.isnumeric()) True
Методы islower() и isupper() определяют регистр, в котором находятся буквы. Эти методы игнорируют небуквенные символы:
>>> text = 'abracadabra' >>> print(text.islower()) True >>> text2 = 'Python bytes' >>> print(text2.islower()) False >>> text3 = 'PYTHON' >>> print(text3.isupper()) True
Метод isspace() определяет, состоит ли анализируемая строка из одних пробелов, или содержит что-нибудь еще:
>>> stroka = ' ' >>> print(stroka.isspace()) True >>> stroka2 = ' a ' >>> print(stroka2.isspace()) False
Конвертация регистра
Как уже говорилось выше, строки относятся к неизменяемым типам данных, поэтому результатом любых манипуляций, связанных с преобразованием регистра или удалением (заменой) символов будет новая строка.
Из всех методов, связанных с конвертацией регистра, наиболее часто используются на практике два – lower() и upper(). Они преобразуют все символы в нижний и верхний регистр соответственно:
>>> text = 'этот текст надо написать заглавными буквами' >>> print(text.upper()) ЭТОТ ТЕКСТ НАДО НАПИСАТЬ ЗАГЛАВНЫМИ БУКВАМИ >>> text = 'зДесь ВСе букВы рАзныЕ, а НУжнЫ проПИСНыЕ' >>> print(text.lower()) здесь все буквы разные, а нужны прописные
Иногда требуется преобразовать текст так, чтобы с заглавной буквы начиналось только первое слово предложения:
>>> text = 'предложение должно начинаться с ЗАГЛАВНОЙ буквы.' >>> print(text.capitalize()) Предложение должно начинаться с заглавной буквы.
Методы swapcase() и title() используются реже. Первый заменяет исходный регистр на противоположный, а второй – начинает каждое слово с заглавной буквы:
>>> text = 'пРИМЕР иСПОЛЬЗОВАНИЯ swapcase' >>> print(text.swapcase()) Пример Использования SWAPCASE >>> text2 = 'тот случай, когда нужен метод title' >>> print(text2.title()) Тот Случай, Когда Нужен Метод Title
Поиск, подсчет и замена символов
Методы find() и rfind() возвращают индекс стартовой позиции искомой подстроки. Оба метода учитывают только первое вхождение подстроки. Разница между ними заключается в том, что find() ищет первое вхождение подстроки с начала текста, а rfind() – с конца:
>>> text = 'пример текста, в котором нужно найти текстовую подстроку' >>> print(text.find('текст')) 7 >>> print(text.rfind('текст')) 37
Такие же результаты можно получить при использовании методов index() и rindex() – правда, придется предусмотреть обработку ошибок, если искомая подстрока не будет обнаружена:
>>> text = 'Съешь еще этих мягких французских булок!' >>> print(text.index('еще')) 6 >>> print(text.rindex('чаю')) Traceback (most recent call last): File "<pyshell>", line 1, in <module> ValueError: substring not found
Если нужно определить, начинается ли строка с определенной подстроки, поможет метод startswith():
>>> text = 'Жила-была курочка Ряба' >>> print(text.startswith('Жила')) True
Чтобы проверить, заканчивается ли строка на нужное окончание, используют endswith():
>>> text = 'В конце всех ждал хэппи-енд' >>> print(text.endswith('енд')) True
Для подсчета числа вхождений определенного символа или подстроки применяют метод count() – он помогает подсчитать как общее число вхождений в тексте, так и вхождения в указанном диапазоне:
>>> text = 'Съешь еще этих мягких французских булок, да выпей же чаю!' >>> print(text.count('е')) 5 >>> print(text.count('е', 5, 25)) 2
Методы strip(), lstrip() и rstrip() предназначены для удаления пробелов. Метод strip() удаляет пробелы в начале и конце строки, lstrip() – только слева, rstrip() – только справа:
>>> text = ' здесь есть пробелы и слева, и справа ' >>> print('***', text.strip(), '***') *** здесь есть пробелы и слева, и справа *** >>> print('***', text.lstrip(), '***') *** здесь есть пробелы и слева, и справа *** >>> print('***', text.rstrip(), '***') *** здесь есть пробелы и слева, и справа ***
Метод replace() используют для замены символов или подстрок. Можно указать нужное количество замен, а сам символ можно заменить на пустую подстроку – проще говоря, удалить:
>>> text = 'В этой строчке нужно заменить только одну "ч"' >>> print(text.replace('ч', '', 1)) В этой строке нужно заменить только одну "ч"
Стоит заметить, что метод replace() подходит лишь для самых простых вариантов замены и удаления подстрок. В более сложных случаях необходимо использование регулярных выражений, которые мы будем изучать позже.
Практика
Задание 1
Напишите программу, которая получает на вход строку и выводит:
- количество символов, содержащихся в тексте;
- True или False в зависимости от того, являются ли все символы буквами и цифрами.
Решение:
text = input() print(len(text)) print(text.isalpha())
Задание 2
Напишите программу, которая получает на вход слово и выводит True, если слово является палиндромом, или False в противном случае. Примечание: для сравнения в Python используется оператор ==
.
Решение:
text = input().lower() print(text == text[::-1])
Задание 3
Напишите программу, которая получает строку с именем, отчеством и фамилией, написанными в произвольном регистре, и выводит данные в правильном формате. Например, строка алеКСандр СЕРГЕЕВИЧ ПушкиН должна быть преобразована в Александр Сергеевич Пушкин.
Решение:
text = input() print(text.title())
Задание 4
Имеется строка 12361573928167047230472012. Напишите программу, которая преобразует строку в текст один236один573928один670472304720один2.
Решение:
text = '12361573928167047230472012' print(text.replace('1', 'один'))
Задание 5
Напишите программу, которая последовательно получает на вход имя, отчество, фамилию и должность сотрудника, а затем преобразует имя и отчество в инициалы, добавляя должность после запятой.
Пример ввода:
Алексей Константинович Романов бухгалтер
Вывод:
А. К. Романов, бухгалтер
Решение:
first_name, patronymic, last_name, position = input(), input(), input(), input() print(first_name[0] + '.', patronymic[0] + '.', last_name + ',', position)
Задание 6
Напишите программу, которая получает на вход строку текста и букву, а затем определяет, встречается ли данная буква (в любом регистре) в тексте. В качестве ответа программа должна выводить True или False.
Пример ввода:
ЗонтИК к
Вывод:
True
Решение:
text = input().lower() letter = input() print(letter in text)
Задание 7
Напишите программу, которая определяет, является ли введенная пользователем буква гласной. В качестве ответа программы выводит True или False, буквы могут быть как в верхнем, так и в нижнем регистре.
Решение:
vowels = 'аиеёоуыэюя' letter = input().lower() print(letter in vowels)
Задание 8
Напишите программу, которая принимает на вход строку текста и подстроку, а затем выводит индексы первого вхождения подстроки с начала и с конца строки (без учета регистра).
Пример ввода:
Шесть шустрых мышат в камышах шуршат ша
Вывод:
16 33
Решение:
text, letter = input().lower(), input() print(text.find(letter), text.rfind(letter))
Задание 9
Напишите программу для подсчета количества пробелов и непробельных символов в введенной пользователем строке.
Пример ввода:
В роще, травы шевеля, мы нащиплем щавеля
Вывод:
Количество пробелов: 6, количество других символов: 34
Решение:
text = input() nospace = text.replace(' ', '') print(f"Количество пробелов: {text.count(' ')}, количество других символов: {len(nospace)}")
Задание 10
Напишите программу, которая принимает строку и две подстроки start и end, а затем определяет, начинается ли строка с фрагмента start, и заканчивается ли подстрокой end. Регистр не учитывать.
Пример ввода:
Программирование на Python - лучшее хобби про про
Вывод:
True False
Решение:
text, start, end = input().lower(), input(), input() print(text.startswith(start)) print(text.endswith(end))
Подведем итоги
В этой части мы рассмотрели самые популярные методы работы со строками – они пригодятся для решения тренировочных задач и в разработке реальных проектов. В следующей статье будем разбирать методы работы со списками.
***
📖 Содержание самоучителя
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
***
Материалы по теме
- ТОП-15 трюков в Python 3, делающих код понятнее и быстрее
строки, сравнения строк, базовые функции str, len, ord, in
Смотреть материал на видео
В Python есть несколько способов задания строк. С первыми двумя способами мы уже немного познакомились на предыдущих занятиях:
str1 = 'Hello1' str2 = "Hello2"
А другие два позволяют задавать многострочные данные:
str3 = '''Многострочные строки 1'''; str4 = """Многострочные строки2"""; print(str1) print(str2) print(str3) print(str4)
То есть,
синтаксис из трех кавычек задает множественные строки. Причем, смотрите, если
мы непосредственно в консоли напишем:
'''hello world'''
то при выводе после hello увидим символ \n, который и означает перевод строки. Функция print обрабатывая этот символ делает перевод строки:
print('hello\nworld')
Если в кавычках ничего не записано:
str0 = ""
то это будет пустая строка, не содержащая никаких символов.
При работе с переменными в Python всегда следует помнить, что это лишь ссылки на соответствующие объекты. Из этого следует, что если у нас определена некая строка:
str1 = "сообщение"
и мы другой переменной присвоим первую:
str2 = str1
то получим две ссылки на один и тот же объект (одну строку). То есть, копирование строки здесь не происходит!
Как создавать
копии строк вы узнаете дальше из этого занятия.
Первый оператор + – это соединение двух строк (или как еще говорят, конкатенация строк). Он используется так:
str1 = 'Hello' str2 = "world!" msg = str1+str2 print(msg)
Здесь сначала будут идти символы первой строки, а затем – второй. В результате у нас формируется новый объект, содержащий эти символы. Но у нас оба слова слились в одно. Как можно было бы добавить между ними пробел? Это можно сделать так:
msg = str1+" "+str2
то есть, мы можем последовательно соединять множество строк между собой. И здесь важно знать, что соединять между собой можно только строки. Например, вот такая операция приведет к ошибке:
dig = 5 msg = "число = "+dig print(msg)
так как dig здесь число, а не строка. Поправить программу можно преобразовав число в строку с помощью функции
<p align=center>str(<аргумент>) msg = "число = "+str(dig)
Теперь все
сработает. Причем, с помощью str можно преобразовывать
самые разные типы данных в строки – это универсальный инструмент.
Далее, в Python довольно просто выполняется дублирование строки. Предположим у нас есть вот такая строка:
one = 'ай '
и мы хотим ее размножить n раз. Это можно сделать так:
msg = one*10 print(msg)
Разумеется, число копий должно определяться исключительно целыми числами, т.е. делать вот такую операцию
msg = one*3.5
нельзя, произойдет ошибка.
Далее, для определения длины строки, то есть, числа символов в строке (включая управляющие символы), используется функция
len(<строка>)
Например:
N = len(msg) print(msg, N)
Затем, для проверки наличия в строке той или иной подстроки, используется оператор in:
<подстрока> in <строка>
Он возвращает True, если подстрока
присутствует и False, если отсутствует. Например:
s = "abcdefg0123" "abc" in s '0' in s '43' in s
Для сравнения строк между собой можно использовать оператор сравнения
<строка 1> == <строка 2>
Данный оператор возвращает True, если строки равны и False, если не равны. Пример:
"abc" == 'abc' "ABC" == 'abc'
Обратите внимание, строка, записанная заглавными буквами – это в Python уже другая строка и оператор сравнения для них возвращает False.
Для сравнения неравенства строк используется оператор не равно:
<строка 1> != <строка 2>
Он возвращает True, если строки не равны и False в противном случае.
Разумеется, эти операции сравнения обычно используются в условном операторе if или операторах циклов while и for, о которых мы уже с вами говорили. Например, можно записать такую программу:
psw = "pass" in_psw = "" while psw != in_psw: in_psw = input("Введите пароль: ") print("Вход в систему разрешен")
Здесь
пользователь будет вводить пароль, пока не введет заданный, то есть, строку pass.
Также строки можно сравнивать на больше и меньше:
<строка 1>
< <строка 2>
<строка 1>
> <строка 2>
Здесь используется лексикографический порядок при определении: какая строка больше, а какая меньше. Мы об этом подробно говорили, когда рассматривали условный оператор if.
Следующая функция
ord(<символ>)
возвращает код указанного символа в строке, например:
ord("a") ord('A') ord('0')
Это основные операторы и функции работы со строками в Python. На следующем занятии мы индексы и срезы строк.
Видео по теме
#1. Первое знакомство с Python Установка на компьютер
#2. Варианты исполнения команд. Переходим в PyCharm
#3. Переменные, оператор присваивания, функции type и id
#4. Числовые типы, арифметические операции
#5. Математические функции и работа с модулем math
#6. Функции print() и input(). Преобразование строк в числа int() и float()
#7. Логический тип bool. Операторы сравнения и операторы and, or, not
#8. Введение в строки. Базовые операции над строками
#9. Знакомство с индексами и срезами строк
#10. Основные методы строк
#11. Спецсимволы, экранирование символов, row-строки
#12. Форматирование строк: метод format и F-строки
#13. Списки — операторы и функции работы с ними
#14. Срезы списков и сравнение списков
#15. Основные методы списков
#16. Вложенные списки, многомерные списки
#17. Условный оператор if. Конструкция if-else
#18. Вложенные условия и множественный выбор. Конструкция if-elif-else
#19. Тернарный условный оператор. Вложенное тернарное условие
#20. Оператор цикла while
#21. Операторы циклов break, continue и else
#22. Оператор цикла for. Функция range()
#23. Примеры работы оператора цикла for. Функция enumerate()
#24. Итератор и итерируемые объекты. Функции iter() и next()
#25. Вложенные циклы. Примеры задач с вложенными циклами
#26. Треугольник Паскаля как пример работы вложенных циклов
#27. Генераторы списков (List comprehensions)
#28. Вложенные генераторы списков
#29. Введение в словари (dict). Базовые операции над словарями
#30. Методы словаря, перебор элементов словаря в цикле
#31. Кортежи (tuple) и их методы
#32. Множества (set) и их методы
#33. Операции над множествами, сравнение множеств
#34. Генераторы множеств и генераторы словарей
#35. Функции: первое знакомство, определение def и их вызов
#36. Оператор return в функциях. Функциональное программирование
#37. Алгоритм Евклида для нахождения НОД
#38. Именованные аргументы. Фактические и формальные параметры
#39. Функции с произвольным числом параметров *args и **kwargs
#40. Операторы * и ** для упаковки и распаковки коллекций
#41. Рекурсивные функции
#42. Анонимные (lambda) функции
#43. Области видимости переменных. Ключевые слова global и nonlocal
#44. Замыкания в Python
#45. Введение в декораторы функций
#46. Декораторы с параметрами. Сохранение свойств декорируемых функций
#47. Импорт стандартных модулей. Команды import и from
#48. Импорт собственных модулей
#49. Установка сторонних модулей (pip install). Пакетная установка
#50. Пакеты (package) в Python. Вложенные пакеты
#51. Функция open. Чтение данных из файла
#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов
#53. Запись данных в файл в текстовом и бинарном режимах
#54. Выражения генераторы
#55. Функция-генератор. Оператор yield
#56. Функция map. Примеры ее использования
#57. Функция filter для отбора значений итерируемых объектов
#58. Функция zip. Примеры использования
#59. Сортировка с помощью метода sort и функции sorted
#60. Аргумент key для сортировки коллекций по ключу
#61. Функции isinstance и type для проверки типов данных
#62. Функции all и any. Примеры их использования
#63. Расширенное представление чисел. Системы счисления
#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы
#65. Модуль random стандартной библиотеки
Основы Python: Шпаргалка по строкам Python
Строки
В информатике последовательности символов называются строками . Строки могут быть любой длины и содержать любые символы, такие как буквы, цифры, символы и пробелы (пробелы, табуляции, новые строки).
Экранирующие символы
Обратная косая черта ( \
) используется для экранирования символов в строке Python.
Например, для печати строки с кавычками можно использовать данный фрагмент кода.
txt = "Она сказала \"Никогда не отпускай\"."
print(txt) # Она сказала "Никогда не отпускай".
Синтаксис
в
Синтаксис в
используется для определения наличия в строке буквы или подстроки. Он возвращает True
, если совпадение найдено, в противном случае возвращается False
.
game = "Популярная игра Nintendo: Mario Kart"
print("l" в игре) # Выводит: True
print("x" в игре) # Выводит: False
Индексирование и нарезка строк
Строки Python можно индексировать, используя ту же нотацию, что и списки, поскольку строки представляют собой списки символов. Доступ к одному символу можно получить с помощью записи в квадратных скобках ( [индекс]
), или к подстроке можно получить доступ с помощью нарезки ( [начало:конец]
).
Индексация с отрицательными числами отсчитывается с конца строки.
str = 'желтый'
str[1] # => 'e'
str[-1] # => 'w'
str[4:6] # => 'ow'
str[:4] # => 'yell'
str[-3:] # => 'low'
Iterate String
Для перебора строки в Python используется нотация for…in.
STR = "Hello"
для C In Str:
Печать (C)
# H
# E
# L
# L
# O
Встроенная функция
LEN ()
В Python встроенный Функция len()
может использоваться для определения длины объекта. Его можно использовать для вычисления длины строк, списков, наборов и других счетных объектов.
length = len("Hello")
print(length)
# Вывод: 5
colors = ['красный', 'желтый', 'зеленый']
print(len(colors))
# Вывод: 3
Объединение строк
Чтобы объединить содержимое двух строк в одну строку, Python предоставляет +
оператор. Этот процесс соединения строк называется конкатенацией.
x = «Одна рыба»,
y = «две рыбы».
z = x + y
print(z)
# Вывод: Одна рыба, две рыбы.
Неизменяемые строки
Строки неизменяемы в Python. Это означает, что однажды определенная строка не может быть изменена.
Для строк нет методов изменения. Это отличается от типов данных, таких как списки, которые можно изменить после их создания.
IndexError
При индексировании строки в Python, если вы попытаетесь получить доступ к несуществующему индексу, генерируется IndexError
. Например, следующий код создаст IndexError
:
fruit = "Berry"
indx = fruit[6]
Python String .format()
Строковый метод Python1 .900 ) заменяет пустые фигурные скобки ( {}
) в строке своими аргументами.
Если в заполнителях указаны ключевые слова, они заменяются соответствующими именованными аргументами метода.
msg1 = 'Фред набрал {} из {} баллов.'
msg1.format(3, 10)
# => 'Фред набрал 3 балла из 10.'
msg2 = 'Fred {глагол} a {прилагательное} {существительное}.'
msg2.format(adjective='пушистый', verb='щекотало', существительное='хомяк')
# => 'Фред пощекотал пушистого хомячка.'
Строковый метод
.lower()
Строковый метод .lower()
возвращает строку, в которой все прописные символы преобразованы в строчные.
приветствие = "Добро пожаловать в Chili's"
print(greeting.lower())
# Выводит: welcome to chili's
Строковый метод
.strip()
4
Строковый метод может использоваться для удаления символов из начала и конца строки.
Методу может быть передан строковый аргумент, указывающий набор символов, которые необходимо удалить. Без аргументов метода пробелы удаляются.
text1 = 'яблоки и апельсины'
text1.strip() # => 'яблоки и апельсины'
text2 = '...+...лимоны и лаймы...-...'
# Здесь мы удаляем только "." символов
text2.strip('.') # => '+...лимоны и лаймы...-'
# Здесь мы удаляем оба "." и символы "+"
text2.strip('.+') # => 'лимоны и лаймы...-'
# Здесь мы удаляем символы ".", "+" и "-"
text2 .strip('.+-') # => 'лимоны и лаймы'
Строковый метод
.title()
Строковый метод .title()
возвращает строку в заголовке. В заголовке первый символ каждого слова пишется заглавным, а остальные символы строчными.
my_var = "dark knight"
print(my_var.title())
# Выводит: Dark Knight
Строковый метод
.split()
Строковый метод split() 0 . split()
9 строка в список элементов:
- Если аргумент не передан, поведение по умолчанию — разделение по пробелам.
- Если методу передается аргумент, это значение используется в качестве разделителя, по которому разбивается строка.
text = "Silicon Valley"
print(text.split())
# Выводит: ['Silicon', 'Valley']
print(text.split('i'))
# Выводит : ['S', 'l', 'con Valley']
Строковый метод Python
.find()
Строковый метод Python .find()
возвращает индекс первого вхождения строки, переданной в качестве аргумента. Он возвращает -1
, если вхождение не найдено.
Mountain_name = "Гора Килиманджаро"
print(mountain_name.find("o")) # Выводит 1 в консоль.
Замена строки
Метод .replace()
используется для замены появления первого аргумента вторым аргументом в строке.
Первый аргумент — это старая подстрока, которую нужно заменить, а второй аргумент — это новая подстрока, которая заменит каждое вхождение первой в строке.
fruit = "Strawberry"
print(fruit.replace('r', 'R'))
# StRawbeRRy
Строковый метод
.upper()
()5 Строковый метод возвращает строку, в которой все символы нижнего регистра преобразованы в верхний регистр.динозавр = "T-Rex"
print(dinosaur.upper())
# Выводит: T-REX
Строковый метод
.join()
Строковый метод .0016 объединяет список строк вместе, чтобы создать новую строку, соединенную с желаемым разделителем.
Метод .join()
запускается для разделителя, и в качестве аргумента передается массив строк, которые необходимо объединить.
x = "-".
join(["Codecademy", "is", "awesome"])
print(x)
# Выводит: Codecademy-is-awesome
Mini Arrow Left IconPrevious
NextMini Arrow Right Icon
Pro толькопуть карьеры
Изучение анализа данных для вашего бизнеса
Подходит для начинающих,
67 Уроки
Python | Струны | Codecademy
Строка — это последовательность символов, заключенная в пару одинарных ( '
) или двойных кавычек ( "
). Строки могут хранить слова, предложения или целые абзацы. Они могут быть любой длины и содержать буквы, цифры, символы и пробелы
message1 = "Я строка"
message2 = 'Я тоже строка'
Другие типы данных, такие как целые числа
, удвоения
и логические значения
также могут быть строками
, если они заключены в кавычки.
Пример | Строка? |
---|---|
«2» (с двойными кавычками) | Да ✅ |
‘3.6’ (с одинарными кавычками) | Да ✅ |
«Правда» (также в кавычках) | Да ✅ |
7 (целое) | Нет ❌ |
Привет (без кавычек) | Нет ❌ |
Истинно (логическое значение) | Нет ❌ |
Строки неизменяемы; они не могут измениться. Каждый раз, когда над строкой выполняется операция, в памяти создается новая строка.
Доступ к символам строки
Строки в Python технически представляют собой тип списка, в котором каждый символ является отдельным элементом. Это означает, что к каждому символу в строке можно получить индивидуальный доступ по индексу, как и к элементам в списке:
myString = "Привет, мир!"
var_1 = myString[0]
var_2 = myString[7:]
var_3 = myString[1:4]
print("var_1: " + var_1) # Вывод: var_1: H
print("var_2 : " + var_2) # Вывод: var_2: Мир!
print("var_3: " + var_3) # Вывод: var_3: ell
Если будет предпринята попытка доступа к индексу за пределами границ, он вернет IndexError
.
имя = "филлис"
name[8] # Выдает ошибку IndexError
Многострочные строки
Строки могут быть длинными или короткими. Для более длинного текста можно использовать многострочную строку. Многострочные строки начинаются и заканчиваются тремя одинарными или двойными кавычками:
my_string = """Если это было сделано, когда сделано, то было хорошо до следствия, и поймать
С его окончанием успеха, что но этот удар
Может быть, все и конец всего здесь,
Но здесь, на этом берегу и отмели времени,
Мы прыгнем в грядущую жизнь."""
Escape Characters
Иногда строка может содержать символ, который Python пытается интерпретировать, например, '
.
my_string = 'Прекрасный день!'
print(my_string)
Это вызовет ошибку, потому что интерпретатор считает, что вторая 9
SyntaxError: недопустимый синтаксис
Эти символы можно «экранировать», предварительно добавив обратную косую черту.
\
называется escape-символом.
Обратная косая черта не будет видна, если будет напечатана строка:
my_string = 'Прекрасный день!'
print(my_string)
# Вывод: Прекрасный день!
Этой проблемы можно избежать, заключая строки, содержащие '
символов, в двойные кавычки:
my_string = "Прекрасный день!"
print(my_string)
# Вывод: Прекрасный день!
Python также имеет ряд непечатаемых символов, которые могут изменять строки. Например, \n
добавляет новую строку, а \t
добавляет вкладку:
note = "Я сверху!\nЯ снизу. \n\tУ меня есть отступ!"
print(note)
Это выведет:
Я на вершине!
Я на дне.
![]()
У меня отступ!
Изменение строк
В Python есть специальные операторы для изменения строк. Например, +
можно использовать для объединения строк, а *
— для умножения строки. Ключевое слово в
можно использовать, чтобы увидеть, существует ли данный символ или подстрока в строке
.
string_one = "Привет,"
string_two = "Мир!"
combo = string_one + string_two
print(combo)
# Вывод: Hello, World!
new_combo = combo * 2
print(new_combo)
# Вывод: Привет, мир! Привет, мир!
if "Мир" в new_combo:
print("Это здесь!")
# Вывод: Это здесь!
Строки также могут быть отформатированы одним из следующих способов:
- Флаг
f/F
(помещается перед открывающей кавычкой). - Метод .format() (требуется добавление заполнителей вручную).
Сравнение строк
Python может использовать операторы сравнения для сравнения содержимого двух строк. Операторы ведут себя так же, как и с числовыми аргументами:
Оператор | Срок | Описание |
---|---|---|
== | Равно | Возвращает True , если две строки равны. |
!= | Не равно | Возвращает True , если две строки не равны. |
< | Менее | Возвращает True , если левая строка лексически предшествует правой строке. |
> | Больше | Возвращает True — левая строка лексически следует за правой строкой. |
<= | Меньше или равно | Возвращает True , если левая строка равна или лексически предшествует правой строке.![]() Оставить комментарий
|