Забавы с фантастическим типом данных String в Python

Как мы уже видели в предыдущем блоге, строка — это последовательность символов. В этом типе данных мы можем хранить любые данные. Например, имя, адрес, URL, токены или любой другой тип данных.

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 существует множество встроенных методов для работы со строками. Здесь я рассмотрю некоторые из них, которые вы можете часто использовать.

  1. capitalize(), title() & count()
  2. find() & index()
  3. lower() & upper()
  4. islower() & isupper()
  5. strip(), lstrip() & rstrip()
  6. isalpha(), isnumeric() & isalnum()
  7. 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. Не забудьте поделиться любыми мыслями, вопросами или проблемами. Я буду рада их увидеть.

Спасибо за ваше драгоценное время ❤


Если вам нравится этот блог, вы можете подписаться на мою рассылку новостей, чтобы получать больше удивительного контента.

Оцените статью
devanswers.ru
Добавить комментарий