Для удобства будем работать с длинной строкой, которая представляет собой целую фразу.
phrase = "питон греется на солнышке"
Наша фраза – предложение, давайте сделаем первую букву строки заглавной.
phrase = phrase.capitalize()
phrase
'Питон греется на солнышке'
Метод .capitalize()
, как и все методы на строках, не создает новую строку сам и не вносит изменения в исходную строку (строки вообще относятся к неизменяемым объектам в Python). Поэтому, чтобы сохранить внесенные изменения, мы перезаписали переменную phrase
.
Проверим, правда ли, что наша новая строка начинается с заглавной П.
phrase.startswith("П") # правда
True
А теперь проверим, правда ли, что наша фраза заканчивается точкой.
phrase.endswith(".")
False
Исправим это! Склеим нашу строку и точку (эта операция называется конкатенацией):
phrase = phrase + "."
phrase
'Питон греется на солнышке.'
Теперь получили полноценное предложение. Давайте проверим, а правда ли, что наша фраза состоит полностью из букв (без цифр, пробелов и иных символов)?
phrase.isalpha() # неправда
False
Вполне ожидаемо: в нашей строке есть пробелы и даже точка.
Может возникнуть вопрос: а зачем нам проверять, из каких символов состоит строка? Ведь даже, если строка состоит из цифр, числом она автоматически не станет. Давайте рассмотрим две ситуации, в которых очень полезно знать, какие символы входят в нашу строку.
Ситуация 1
Пользователь должен придумать пароль для своей учётной записи. Пароль должен состоять только из цифр и букв.
password = input("Введите пароль: ")
if password.isalnum() == False:
print("Пароль должен состоять только из букв и цифр!")
Введите пароль: pass17
password = input("Введите пароль: ")
if password.isalnum() == False:
print("Пароль должен состоять только из букв и цифр!")
Введите пароль: tututu-17 Пароль должен состоять только из букв и цифр!
В примере выше мы использовали метод .isalnum()
, который позволяет проверить, составлена ли строка только из букв (alpha) и цифр (num).
Ситуация 2
Есть список txt-файлов, и мы хотим их автоматически рассортировать, зная, что если название файла состоит из цифр, то это текст для анализа, а если нет, то это файл с результатами анализа.
files = ["100.txt", "110.txt", "result1.txt", "121.txt", "result2.txt", "123.txt", "result3.txt"]
ans = []
res = []
for f in files:
name = f.split(".")[0] # разобьем названия по точке и возьмем первый элемент - до txt
if name.isnumeric():
ans.append(f)
else:
res.append(f)
print(ans)
print(res)
['100.txt', '110.txt', '121.txt', '123.txt'] ['result1.txt', 'result2.txt', 'result3.txt']
Понятно, что список файлов не берется из ниоткуда, плюс, обычно мы сортируем файлы не по спискам, а по папкам, но это немного другая история, можете посмотреть тьюториал по модулю os
, который позволяет работать с файлами на компьютере, создавать папки, переименовывать их и прочее.
Внимание: для тренировки создайте папку с ненужными или пустыми файлами,чтобы случайно ничего не повредить. Отменить действие будет невозможно!
Какие еще полезные операции можно проводить со строками? Заменять символы. Для этого есть метод .replace()
.
address = "Г.Москва, ул.Мясницкая, д. 25"
Заменим сокращение "Г." на слово "город":
address = address.replace("Г.", "город ")
address
'город Москва, ул.Мясницкая, д. 25'
address = address.replace("д. 25", "д.25")
address
'город Москва, ул.Мясницкая, д.25'
Методы можно «наслаивать» друг на друга: ставить точку и продолжать.
sent = "Питон Греется На Солнышке"
sent = sent.replace("Г", "г").replace("Н", "н").replace("С", "с")
sent
'Питон греется на солнышке'
Что еще полезного можно делать со строками? Менять регистр.
name = input("Введите имя и фамилию: ")
Введите имя и фамилию: аЛЛА тАМБОВЦЕВА
Знакомая история, да? Поправим:
name.swapcase() # ура
'Алла Тамбовцева'
Финальный аккорд: посчитаем, сколько раз разные символы встречаются в строке.
phrase
'Питон греется на солнышке.'
phrase.count("е")
3
phrase.count("т")
2
А как найти положение слова в тексте? Для этого есть метод .find()
.
phrase.find("греется")
6
Это означает, что слово греется начинается с символа, имеющего в строке индекс 6. Проверим глазами:
phrase
'Питон греется на солнышке.'
Всё верно.
Если такого слова (словом мы называем любую подстроку, то есть последовательность символов) в строке нет, то выводится индекс -1
.
phrase.find("солнце")
-1