Как мы уже видели в предыдущем блоге, строка — это последовательность символов. В этом типе данных мы можем хранить любые данные. Например, имя, адрес, URL, токены или любой другой тип данных.
- 1. Перевернуть стих с помощью оператора Slice
- Оператор slice
- 2. Манипулирование строкой с помощью 7 популярных методов
- capitalize(), title() & count()
- find() & index()
- lower() & upper()
- islower() & isupper()
- strip(), lstrip() & rstrip()
- isalpha(), isnumeric() & isalnum()
- split(), join() & replace()
- Заключение
1. Перевернуть стих с помощью оператора Slice
В этом упражнении мы рассмотрим различные способы реверсирования строки в python с помощью оператора slice. Существует множество других способов обратить строку. Но моя главная цель — показать вам, как использовать оператор slice.
Оператор slice
Оператор slice записывается с помощью квадратных скобок и трех аргументов. Эти три аргумента — start, stop и step. Start указывает место начала операции; stop указывает место остановки операции, а step указывает количество шагов (1, 2, -3, -1 и т.д.). Оператор slice можно использовать со строками, списками и кортежами. Мы не можем использовать его с int, булевым множеством или словарем.
Примечание: Мы можем игнорировать аргумент step. Это необязательный аргумент. В некоторых случаях можно пренебречь аргументами start и даже stop.
string[start:stop:step] or list[start:stop:step] or tuple[start:stop:step]
Предположим, что у нас есть строка «Программирование на Python». В каждом языке программирования индекс начинается с 0. Таким образом, для нашей строки мы имеем индексы от 0 до 17.
Если нам нужны данные с индекса 2 по 12, мы должны написать str1[2:13]. Оператор slice считает точкой остановки 12. Или, в общем случае, за один пункт до заданной точки остановки.
str1 = "Python Programming"
print(str1[2:13]) #OUTPUT : thon Progra
Теперь вы скажете, что мне нужны все 3-е данные от индекса 2 до индекса 13. Таким образом, наш оператор slice будет выглядеть примерно как str1[2:13:3]. На изображении ниже видно, что он взял начальный индекс, а затем каждый 3-й индекс. Таким образом, мы получили следующие индексы 2, 5, 8 и 11. Поскольку точкой остановки был 13, компилятор не учитывал 14-й индекс.
str1 = "Python Programming"
print(str1[2:13:3]) #OUTPUT : tnrr
Как я уже говорил, мы можем игнорировать аргументы start и stop в операторе slice. Поэтому в некоторых случаях, когда мы хотим, чтобы начальная точка была равна 0, мы можем пренебречь аргументом start. Например, если нам нужен str1[0:13:3], то мы можем записать его как str1[:13:3].
str1 = "Python Programming"
print(str1[:13:3]) #OUTPUT : Ph oa
Таким же образом мы можем игнорировать и точку остановки. Так, вы можете записать str1[10::3] или str1[10:18:3].
str1 = "Python Programming"
print(str1[10::3]) #OUTPUT : gmn
Мы также можем игнорировать конечные точки остановки и запуска одновременно. Вы можете написать что-то вроде str1[::3]. Мы должны пренебрегать использованием аргументов start и stop в тех случаях, когда у нас есть аргументы step. В противном случае нет смысла использовать просто str1[:] или str1[::]. Это вернет точную строку.
str1 = "Python Programming"
print(str1[::3]) #OUTPUT : Ph oai
print(str1[::]) #OUTPUT : Python Programming
print(str1[:]) #OUTPUT : Python Programming
Говорил ли я вам, что мы можем использовать отрицательные аргументы start, stop и step 🤔?
Мы можем использовать отрицательные аргументы. Но прежде чем использовать отрицательный аргумент start, stop или step, будьте осторожны и проверьте его должным образом. По умолчанию аргумент step равен 1.
В приведенном ниже примере, поскольку мы не указали аргумент step, он примет значение 1 по умолчанию. Теперь -1 — это последний элемент нашей строки, поэтому после добавления к нему 1 мы получим 0. При этом python не будет начинать с самого начала. Он попытается найти индекс 0 после индекса -1. Таким образом, на выходе мы получим пустую строку.
str2 = "Python Programming"
print(str2[-1:-5]) #OUTPUT :
Теперь, если мы начнем операцию среза не с -1, а с -5, мы получим следующий результат. Причина в том, что когда компилятор пытается добавить 1 в -5, он получает -4, а оно существует после индекса -5.
str2 = "Python Programming"
print(str2[-5:-1]) #OUTPUT : mmin
str2 = "Python Programming"
print(str2[-5:-1]) #OUTPUT : nmagr
str2 = "Python Programming"
print(str2[-1:-5:-1]) #OUTPUT : gnim
Итак 😮💨, как использовать оператор slice для реверсирования строки. Я знаю, к этому моменту вы уже можете догадаться, как это сделать. Тем не менее, давайте сделаем это!
str1 = "Python Programming"
str2 = str1[::-1]
print(str2) #OUTPUT : gnimmargorP nohtyP
2. Манипулирование строкой с помощью 7 популярных методов
В python существует множество встроенных методов для работы со строками. Здесь я рассмотрю некоторые из них, которые вы можете часто использовать.
- capitalize(), title() & count()
- find() & index()
- lower() & upper()
- islower() & isupper()
- strip(), lstrip() & rstrip()
- isalpha(), isnumeric() & isalnum()
- split(), join() & replace()
capitalize(), title() & count()
Метод capitalize() преобразует первый символ строки в заглавную букву. В то время как метод title() преобразует первый символ каждого слова в строке в заглавную букву.
str1 = "learn python programming"
print(str1.capitalize()) #OUTPUT: Learn python programming
print(str1.title()) #OUTPUT: Learn Python Programming
Метод count() позволяет подсчитать количество вхождений определенного символа (символов) или подстроки в строке. Символами считаются пробел, цифры и символы. Для использования метода count можно также использовать строковую переменную.
str1 = "learn python programming learn"
str2 = "python"
print(str1.count('learn')) #OUTPUT: 2
print(str1.co4unt(' ')) #OUTPUT: 3
print(str1.count(str2)) #OUTPUT: 1
find() & index()
Ищет в строке указанный символ(ы) или подстроку и возвращает позицию, где он был найден. Основное различие между find() и index() заключается в том, что если указанный символ(ы) или подстрока не существует, метод find() возвращает -1, а метод index() выдает ошибку.
find()
str1 = "learn python programming learn"
print(str1.find('learn')) #OUTPUT: 0
print(str1.find(' ')) #OUTPUT: 5
print(str1.find('z')) #OUTPUT: -1
index()
str1 = "learn python programming learn"
print(str1.index('learn')) #OUTPUT: 0
print(str1.index(' ')) #OUTPUT: 5
print(str1.index('z'))
"""
OUTPUT
---
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
"""
Примечание: Тройные кавычки имеют два назначения. Вы можете использовать их для многострочных комментариев или присвоения многострочных строковых данных.
Я рекомендую использовать метод find() вместо index().
lower() & upper()
Иногда нам нужно преобразовать данные в нижний или верхний регистр. Скорее всего, в задачах науки о данных и машинного обучения нам нужно преобразовать все в нижний регистр.
lower()
str1 = "Learn Python Programming from @Sahil Fruitwala on 13-Oct 🙌"
print(str1.lower())
#OUTPUT: learn python programming from @sahil fruitwala on 13-oct 🙌
upper()
str1 = "Learn Python Programming from @Sahil Fruitwala on 13-Oct 🙌"
print(str1.upper())
#OUTPUT: LEARN PYTHON PROGRAMMING FROM @SAHIL FRUITWALA ON 13-OCT 🙌
Примечание: Любой символ, кроме алфавита, будет проигнорирован при применении метода upper() или lower().
islower() & isupper()
Методы islower() и isupper() проверяют, все ли символы заданной строки находятся в нижнем или верхнем регистре соответственно. В результате работы этих методов возвращается булево значение (True/False).
str1 = "LEARN PYTHON PROGRAMMING FROM SAHIL FRUITWALA"
print(str1.islower()) #OUTPUT: False
print(str1.isupper()) #OUTPUT: True
str1 = "learn python programming from sahil fruitwala"
print(str1.islower()) #OUTPUT: True
print(str1.isupper()) #OUTPUT: False
str1 = "Learn Python Programming from @Sahil Fruitwala on 13-Oct 🙌"
print(str1.islower()) #OUTPUT: False
print(str1.isupper()) #OUTPUT: False
strip(), lstrip() & rstrip()
Стандартное определение метода strip() заключается в том, что он возвращает обрезанную версию строки. Но что это значит? Это значит, что метод strip() возвращает строку с лишними белыми пробелами, удаленными с обоих концов строки.
strip()
str1 = " LEARN PYTHON PROGRAMMING "
print(str1)
#OUTPU: LEARN PYTHON PROGRAMMING
print(str1.strip())
#OUTPU:LEARN PYTHON PROGRAMMING
lstrip() & rstrip()
lstrip() удаляет лишние белые пробелы только с левой стороны строки. В то время как rstrip() удаляет лишние пробелы из правой части строки.
str1 = " LEARN PYTHON PROGRAMMING "
print(str1.lstrip())
#OUTPU:LEARN PYTHON PROGRAMMING
print(str1.rstrip())
#OUTPU: LEARN PYTHON PROGRAMMING
Примечание: Вы не сможете увидеть большой разницы, но попробуйте это на своей системе, и вы увидите разницу.
isalpha(), isnumeric() & isalnum()
Как проверить, содержит ли строка только алфавит, только цифры или только буквенно-цифровые данные?
Python предоставляет вам метод isalpha(), isnumeric() & isalnum() для проверки ваших строк.
str1 = "LearnPythonProgramming"
print(str1.isalpha()) # OUTPUT: True
print(str1.isnumeric()) # OUTPUT: False
print(str1.isalnum()) # OUTPUT: True
str1 = "Learn Python Programming"
print(str1.isalpha()) # OUTPUT: False
print(str1.isnumeric()) # OUTPUT: False
print(str1.isalnum()) # OUTPUT: False
str1 = "123LearnPythonProgramming123"
print(str1.isalpha()) # OUTPUT: False
print(str1.isnumeric()) # OUTPUT: False
print(str1.isalnum()) # OUTPUT: True
str1 = "123456"
print(str1.isalpha()) # OUTPUT: False
print(str1.isnumeric()) # OUTPUT: True
print(str1.isalnum()) # OUTPUT: True
str1 = "123LearnPythonProgramming123@"
print(str1.isalpha()) # OUTPUT: False
print(str1.isnumeric()) # OUTPUT: False
print(str1.isalnum()) # OUTPUT: False
split(), join() & replace()
Метод split() разбивает строку на список. Это разбиение основано на символе(ах), переданном(ых) в качестве аргумента в методе split(). Если вы не передали ни одного аргумента в метод split, он примет белый пробел в качестве значения по умолчанию.
Определение метода split(): _string_.split(separator, maxsplit)
.
Здесь maxsplit является необязательным аргументом. Он определяет, сколько разделить строку. Значение по умолчанию -1, что означает «все вхождения».
str1 = "Learn#Python#Programming"
print(str1.split("#"))
#OUTPUT: ['Learn', 'Python', 'Programming']
str1 = "Learn Python Programming"
print(str1.split()) #OUTPUT: ['Learn', 'Python', 'Programming']
print(str1.split(" ")) #OUTPUT: ['Learn', 'Python', 'Programming']
str1 = "Learn#Python#Programming#From#Sahil_Fruitwala"
print(str1.split("#", -1))
#OUTPUT: ['Learn', 'Python', 'Programming', 'From', 'Sahil_Fruitwala']
print(str1.split("#", 1))
#OUTPUT: ['Learn', 'Python#Programming#From#Sahil_Fruitwala']
print(str1.split("#", 3))
#OUTPUT: ['Learn', 'Python', 'Programming', 'From#Sahil_Fruitwala']
Метод join() берет все элементы итеративной таблицы и объединяет их в одну строку с помощью указанной строки или символа(ов). В примере ниже мы видим, что итерабель объединяется с помощью пробела.
myTuple = ("Learn", "Python", "Programming")
myList = ["Learn", "Python", "Programming"]
tuple1 = " ".join(myTuple)
list1 = " ".join(myList)
print(tuple1) # OUTPUT: Learn Python Programming
print(list1) # OUTPUT: Learn Python Programming
Используя метод join(), мы можем также объединить все ключи словаря.
myDict = {"Language":"Python", "Developer":"Sahil", "Year": 2021}
dict1 = " ".join(myDict)
# or
# dict1 = " ".join(myDict.keys())
print(dict1) # OUTPUT: Language Developer Year
Мы можем объединить все значения словаря с помощью следующего метода:
myDict = {"Language":"Python", "Developer":"Sahil", "Year": "2021"}
dict1 = " ".join(myDict.values())
print(dict1) # OUTPUT: Language Developer Year
Примечание: С помощью метода join() можно объединить только строковое значение.
Метод replace() заменяет указанную строку или символ(ы) на другую указанную фразу.
myStr = "Python Programming"
newStr = myStr.replace("Python", "C++")
print(newStr)
Мы можем передать количество вхождений, которые хотим заменить. Например, если мы хотим заменить только 2 вхождения символа ‘a’, мы можем написать следующий код.
myStr = "Learn Python Programming from Sahil Fruitwala"
newStr = myStr.replace("a", "@", 2)
print(newStr)
Заключение
10 минут хааа! Наконец-то мы подошли к концу этого раздела 😁.
Я знаю, это очень много, чтобы принять за один раз. Но вам не нужно запоминать все, о чем я говорил. Я просто показал вам, чтобы вы могли вспомнить, что возможно, а что нет. Существуют и другие методы, о которых я не упомянул.
Если вы хотите узнать больше о строковых методах, загляните в W3School.
На этом все. Спасибо, что прочитали. Я знаю, что это много, но я надеюсь, что вы получили некоторые знания о строковых методах в Python.
Обязательно поделитесь любыми мыслями, вопросами или проблемами. Дайте мне знать, если вам нужна помощь или вы хотите что-то обсудить. Свяжитесь со мной в Twitter или LinkedIn. Не забудьте поделиться любыми мыслями, вопросами или проблемами. Я буду рада их увидеть.
Спасибо за ваше драгоценное время ❤
Если вам нравится этот блог, вы можете подписаться на мою рассылку новостей, чтобы получать больше удивительного контента.