Что такое строка в Python

Что такое строка в Python

Что такое строковый тип данных в Python, как создавать и удалять строки, как обращаться к символам по индексу и какая максимальная длина строки — все эти вещи вы рассмотрите в этой статье.

Строки — фундаментальный тип данных в Python, позволяющий хранить текстовую, символьную информацию и манипулировать ею. Давайте разберем основные возможности работы со строками в этом языке программирования. ↓

Строковый тип данных в Python

В Python строковые данные имеют формат str (string). Строки в питоне представляют собой последовательность unicode-символов, заключенных в одинарные, двойные или тройные кавычки. Это дает возможность использовать их как для хранения простого текста, так и многострочных блоков.

'Hello'
"Hello"
Эти два варианта равнозначны

Внутри строки можно использовать другой тип кавычек — это позволит включить кавычки в строку:

"She said 'Hello'"

Тройные кавычки позволяют включать многострочный текст без использования спецсимволов. Эти кавычки часто используется для комментирования кода и создания документации:

'''
Первая строка
'Вторая строка'
"Третья строка"
'''
Также внутри тройных кавычек можно использовать двойные и одинарные кавычки

Как создавать текстовые переменные в Питоне

Переменные типа str в Python предназначены для хранения и обработки любых текстовых данных. Что такое str? Это любые символы: буквы, цифры, знаки препинания, эмодзи, спецсимволы. Текстовые переменные можно создавать несколькими способами:

  • Присваиванием значения в кавычках (они бывают одинарными, двойными или тройными):
name = 'John'
text = "Hello world!"
  • Конвертацией других типов данных в строку при помощи функции функции str():
num = 5
num_text = str(num)
  • Считыванием данных из файла, базы данных или вводом пользователя:
user_name = input('Введите имя: ')

С текстовыми переменными можно выполнять такие операции, как:

  • Конкатенация (сложение) строк
  • Форматирование текста
  • Поиск и замена подстрок
  • Проверка наличия символов или слов
  • Извлечение части строки (срезы).

Как вывести строку в консоль

Функция print() выводит переданные ей объекты в окно консоли и часто используется для вывода строк.

print('Hello, World!')
# Выведет Hello, World!

Способы объявления пустой строки

Пустая строка — это строка нулевой длины, не содержащая символов. Она может понадобиться для инициализации переменных, при разделении текста на абзацы и в других случаях. В Python пустую строку можно объявить несколькими способами:

  • Используя пустые кавычки:
empty_string = ''
  • Вызывая конструктор строкового класса без аргументов:
empty_string = str()
  • Используя метод форматировании строк с пустыми значениями:
empty_string_format = "{}".format()

Во всех случаях для переменной будет создана пустая строка со значением '' и типом str.

Пустые строки могут использоваться для обозначения отсутствия значения, разделения данных и выполнения других полезных задач при работе с текстом.

Как удалить строку в Python

В отличие от списков и словарей, строки в Python являются неизменяемым типом данных. Это означает, что элементы строки нельзя удалять или заменять по отдельности. Однако иногда возникает необходимость полностью удалить строковый объект из памяти. Для этого можно использовать следующие способы:

  • Присвоить переменной значение None:
s = 'Text'
s = None
  • Использовать оператор del:
s = 'Text'
del s

После выполнения любого из этих действий ссылка на строку будет удалена.

Однако строка 'Text' все еще будет существовать какое-то время в памяти как объект, но без ссылок на него.

Чтобы удалить мусор используйте метод gc.collect(), который запускает сборку мусора в Python:

import gc
s = 'Text'
del s # Или при s = None
gc.collect()

Если у вас есть список строк и вы хотите удалить из него конкретную часть, то вы можете использовать:

  • Метод del для удаления строки по индексу:
my_list = ["apple", "banana", "cherry"]
del my_list[1]  # Удаляем строку с индексом 1 (banana)
print(my_list)  # Выведет: ['apple', 'cherry']
  • Метод remove() для удаления строки по значению:
my_list = ["apple", "banana", "cherry"]
my_list.remove("banana")  # Удаляем строку "banana" из списка
print(my_list)  # Выведет: ['apple', 'cherry']

Удаление строк часто применяется при очистке неиспользуемых данных и оптимизации работы программы.

Обращение по индексу

Индексация позволяет получить доступ к конкретному символу в строке по его позиции. В Python индексация начинается с 0. Первый символ имеет индекс 0, второй – 1 и так далее, например:

s = 'Text'
print(s[0]) # Выведет T
print(s[1]) # Выведет e
print(s[2]) # Выведет x
print(s[3]) # Выведет t

Кроме положительных значений можно использовать отрицательные индексы. В этом случае отсчет ведется с конца строки. Последний символ имеет индекс -1, предпоследний -2 и так далее ↓

print(s[-1]) # t
print(s[-2]) # x
print(s[-3]) # e
print(s[-4]) # T
Если при индексации задан индекс за границами строки, произойдет ошибка IndexError.

Также индексы можно использовать для срезов, чтобы получать необходимые части строки:

s = 'Text'
# Сделаем срез с 0 индекса по 3
y = s[0:3] 

print(y) # Выведет Tex
# Заметьте, что символ 't' под 3 индексом не был включен

Обращение по индексу используется для выделения символов, подстрок, циклического перебора и других задач.

Максимальная длина строки в Python

В Python длина строки не ограничена и зависит только от объема оперативной памяти. Теоретически максимальная длина строки на 32-битной системе составляет 2^31 - 1 символов, а на 64-битной – 2^63 - 1 символов. Однако на практике длина строки может быть ограничена другими факторами:

  • Ограничением операционной системы на максимальный размер строковой переменной
  • Используемой кодировкой. Например, в UTF-8 символ может занимать от 1 до 4 байт
  • Объемом оперативной памяти. Чем длиннее строка, тем больше памяти требуется.

При создании очень больших строк следует проанализировать доступные ресурсы и ограничения конкретной системы. В некоторых случаях имеет смысл использовать другие типы данных, например, файлы.

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

Перенос строк

При работе с текстом в программах часто возникает необходимость разбить строку на несколько строк или склеить несколько строк в одну. Для этого в Python предусмотрен специальный символ переноса строки. Чтобы разбить текст на несколько строк в Python, используется символ "\n" – он означает перевод строки. Этот символ вставляется внутрь строки там, где должен произойти перенос:

text = "Строка 1\nСтрока 2\nСтрока 3"
print(text)

#Выведет:
Строка 1
Строка 2
Строка 3

Также перенос строки добавляется автоматически, если применить print() для вывода нескольких строк:

print("Первая строка")
print("Вторая строка")

# Выведет:
Первая строка
Вторая строка
Обратите внимание, что \n означает перенос именно строки. Абзацы в тексте для разделения нуждаются в дополнительном отступе.

Таким образом, символ \n позволяет управлять разбиением текста на строки в программах на Python. Это удобно при форматировании строковых данных.

Кстати, когда вы используете тройные кавычки, то вам не надо использовать символ переноса строки «\n», так как он проставляется автоматически.

Подстроки

Подстрокой называется фрагмент строки, который входит в ее состав. Например, в строке «привет» подстроками могут быть «пр», «ив», «ве». Для проверки наличия подстроки в строке используется оператор in:

text = "привет"
print("пр" in text) # Выведет True
print("вет" in text) # Выведет True
print("python" in text) 
# Выведет False, так как такого сочетания символов с строке нет

Подстроки часто применяются для поиска определенных шаблонов в тексте. Например, для проверки вхождения ключевых слов, имен, дат и других значимых фрагментов.

Преобразование типов

Преобразование типов часто используется для считывания и последующей обработки данных из текстовых файлов, строковых переменных и других источников.

Как преобразовать любой тип данных в строку  с помощью функции str()

Функция str() преобразует значение любого типа в строку. Она принимает один аргумент — значение, которое нужно преобразовать.

a = 123
str_a = str(a)

print(str_a) # '123'

Однако, в случае с массивом есть свою нюансы:

a = [1,2,3]
b = str(a)
print(b) # Выведет строку [1, 2, 3]

# Давайте проверим:
print(type(a)) # Выведет class 'list'
print(type(b)) # Выведет class 'str'

Чтобы мы получили более приемлимый формат, мы должны использовать функции map() и join():

a = [1,2,3]
b = ''.join(map(str, a)) 
# С помощью map() мы разбираем массив на части
# Эти части мы преобразуем в строки с помощью str
# А затем объединяем их с помощью join()

print(b) # Выведет 123
print(type(b)) # Выведет class 'str'

Если нам потребуется строка с пробелами или иными знаками, просто вставьте в кавычки, которые стоят перед .join(), интересующий вас знак:

a = [1,2,3]
b = '&'.join(map(str, a))
print(b) # Выведет 1&2&3

Преобразование из строки в другой тип

Важно! Если наполнение строки не соответствует формату типа, в который происходит конвертация, то выйдет ошибка.

Например, невозможно преобразовать строку, в число, если она им не является:

x = int('10')
print(x) # Выведет 10

y = int('Строка')
print(y) 
# Выведет ошибку ValueError: invalid literal for int() with base 10: 'Строка'

Для преобразований используются такие функции:

  • int(str) — преобразует строку в целое число
  • float(str) — преобразует строку в число с плавающей точкой
  • bool(str) — преобразует строку в булево значение (True или False)
  • list(str) — преобразует строку в список, разбивая ее по символам
  • tuple(str) — преобразует строку в кортеж, разбивая ее по символам
  • bytes(str, encoding) — преобразует строку в байтовый объект указанной кодировки
  • json.loads(str) — преобразует строку из формата JSON в объект Python.

Что еще надо знать о строках

  • Сроки неизменяемы. Это означает, что после создания строки её больше нельзя изменять
  • Длина строки не ограничена и зависит только от объема памяти. Чтобы узнать количество символов в строке используется функция len():
s = 'Hello'
print(len(s)) # Выведет 5
Софья Пирогова

Софья Пирогова

автор статей / копирайтер
Георгий Бабаян

Георгий Бабаян

Основатель и CEO Эльбрус Буткемп