Python является одним из самых популярных и востребованных языков программирования. Он имеет большое количество встроенных методов и функций, в том числе и для работы со строками. Часть из них будет использована в данной инструкции, но об этом немного позже.
Строки – это объекты данных, которые хранят последовательность символов, в том числе буквы, цифры, знаки препинания и т.д. Преобразование строк необходимо в тех случаях, когда пользователь не имеет возможности проделать ряд операции над ними, ввиду их особенности. Например, он не может сложить две строки, хранящие числа и получить их сумму. Для этого необходимо в первую очередь выполнить преобразование, а уже потом реализовывать их сложение. Такой принцип работает и для всех остальных типов данных.
В данной инструкции мы расскажем о том, как выполнять преобразование строк в другие типы данных.
Преобразование строк – это процесс перехода от строкового типа данных к другому, реализованный с помощью встроенных методов Python.
Данный процесс может понадобиться пользователю в самых разных случаях. Ниже приведем список некоторых из них:
Описанный случай может возникнуть в некоторых приложениях, где пользователь, например, заполняет форму ввода. Вся информация, которая была указана в ней, будет передана по умолчанию в виде строки. Для дальнейшего взаимодействия с данным, их необходимо преобразовать к правильному типу.
В данном случае пользователю так же, как и в прошлом примере, необходимо произвести преобразование полученной последовательности символов, будь это JSON или XML-файлы.
При взаимодействии с БД некоторые ее данные могут также интерпретироваться в код программы как строки. Чтобы код работал правильно, их необходимо привести к соответствующему типу данных.
Если пользователь хочет выполнить сравнение двух строк, они обязательно должны быть приведены к одному типу данных. А вот выбор этого типа зависит от требований к сравнению. Например, пользователь хочет выяснить, какое из чисел в сравниваемых последовательностях больше. Для этого он преобразует строки в числовой формат данных, а затем выполняет сравнение.
Исходя из примеров выше, можно утверждать, что без преобразования строк невозможно правильно выполнить требуемые операции в своем коде. С реализацией данного процесса помогут методы, встроенные в Python. Им и будет отведена оставшаяся часть этой инструкции.
В первую очередь поговорим о преобразовании последовательности символов в числа. Первый метод, который будет рассмотрен – это int()
. Он предназначен для преобразования строки в целое число в Python. Его синтаксис выглядит следующим образом:
int(example_string)
В качестве аргумента он принимает исходную последовательность символов, а затем преобразует ее к целому числу.
Рассмотрим на примере:
example_string = "112"
result = int(example_string)
print(result)
Результат работы продемонстрирован на картинке ниже.
Если аргумент функции содержит не только цифры, а например буквы или другие символы, то int()
не сможет выполнить преобразование и выведет ошибку ValueError
. Однако в некоторых случаях это можно обойти. Например, пользователь передал в аргумент число в шестнадцатеричной системе счисления, что подразумевает наличие букв в такой последовательности. В этом случае используется дополнительный аргумент, который указывает на основание системы счисления. Он даст понять среде разработке, что перед ней представлено именно число.
Рассмотрим данную ситуацию на примере:
example_string = "A1"
result = int(example_string, 16)
print(result)
В этом примере компилятор не выдаст никаких ошибок и выведет результат, который показан на картинке ниже.
Как мы видим, код успешно выполнен и программа преобразовала строку в десятичное целое число 161.
В данной главе мы поговорим о преобразовании последовательности символов в числа с плавающей точкой. Поможет нам в этом функция float()
. Ее синтаксис ничем не отличается от функции, рассматриваемой в прошлой главе. Стоит отметить, что вещественное число обязательно должно содержать точку, а не запятую. Иначе Python просто не сможет интерпретировать передаваемое в строке число.
Приведем пример использования функции:
example_string = "112.112"
result = float(example_string)
print(result)
В данном примере мы преобразуем последовательность символов 112.112
в число с плавающей точкой. Результат представлен на картинке ниже.
В дополнение к рассмотренной выше функции стоит упомянуть о существовании round()
. Она понадобится пользователю в тех случаях, когда необходимо указать требуемое количество чисел после точки.
Допустим, нам нужно, чтобы в примере выше при преобразовании строки итоговое число содержало всего одну цифру после точки. Для этого нам необходимо объявить функцию round()
и передать соответствующий аргумент:
example_string = "112.112"
result = round(float(example_string),1)
print(result)
После дополнительных преобразований результат получился следующим:
На этом о преобразовании строк в числа мы закончим и перейдем к не менее важному типу данных – списку.
В данном разделе инструкции мы рассмотрим преобразование строк в списки в Python, а именно функцию split()
.
Списки – это перечисленные через запятую элементы, которые обязательно заключены в квадратные скобки. Все элементы списка имеют свой уникальный идентификатор (индекс). Типы данных у элементов могут различаться.
Теперь поговорим о самой функции split()
. Она выполняет разделение строки на список подстрок, используя разделитель. По умолчанию он равен пробелу, но его можно изменить при необходимости. Для этого при вызове функции нужно указать уникальный разделитель, по которому будет происходить формирование списка из последовательности символов.
Рассмотрим применение данной функции на примере:
example_string = "Monkey-Lion-Tiger"
example_list = example_string.split("-")
print(example_list)
В результате мы получим список из 3 элементов, как показано на картинке ниже.
Списки используются также для преобразования строки в массив в Python. Именно в них хранятся все элементы. А происходит это из-за того, что в данном языке программирования попросту отсутствуют массивы как отдельный тип данных.
Во время написания кода программист может столкнуться с необходимостью преобразования строки в дату. На этот случай в Python также существуют специальные модули, которые будут рассмотрены ниже.
Рассматриваемый метод принадлежит модулю datetime
. Он создает объект даты и времени из строки, соответствующей указанному формату.
Синтаксис рассматриваемого метода выглядит следующим образом:
datetime.strptime (date_string, date_format)
Рассмотрим ниже пример, где у нас есть последовательность символов 2023-01-01 12:30:31
, которую необходимо преобразовать в дату и время. В первую очередь инициализируем модуль, а затем уже пишем оставшийся код:
from datetime import datetime
date_string = "2023-01-01 12:30:31"
date_object = datetime.strptime(date_string, "%Y-%d-%m %H:%M:%S")
print(date_object)
В качестве формата даты и времени в примере мы указали %Y-%d-%m %H:%M:%S
, но у вас он может отличаться, т.к. напрямую зависит от формата даты в исходной строке.
Как видно по картинке ниже, преобразование выполнено успешно.
Теперь перейдем к модулю dateutil
и его функции parser.parse
. Действует она также, как и предыдущий метод, но есть одно отличие. Заключается оно в том, что функция parser.parse
автоматические определяет формат указанной даты.
Синтаксис вызова функции выглядит следующим образом:
parser.parse(example_string)
Теперь рассмотрим ее использование на примере, не забывая объявить модуль в начале кода:
from dateutil import parser
date_string = "2023-01-01 12:30:31"
date_object = parser.parse(date_string)
print(date_object)
В примере мы использовали уже знакомые дату и время. Результат получился таким же, как и в прошлом способе.
Функция – это некоторый фрагмент кода, который отвечает за выполнение конкретной задачи и может быть использован множество раз. У пользователя может возникнуть ситуация, когда этот фрагмент кода будет закреплен за переменной строкового типа и ее необходимо преобразовать в функцию. С этим ему поможет встроенная функция eval()
.
Eval()
анализирует все данные, которые были переданы ей в качестве аргумента, после чего выполняет полученное выражение, если это возможно. Она отлично подходит для преобразования строки в функцию в Python.
Ее синтаксис выглядит следующим образом:
eval(выражение)
Рассмотрим использование eval()
на примере:
example_string = "print('Hello, user!')"
eval(example_string)
В данном примере мы храним вызов функции print()
в переменной example_string
. Eval()
, в свою очередь, принимает в качестве аргумента содержимое этой переменной и вызывает считанное выражение.
Как видно по картинке ниже, вызов функции успешно выполнен.
Используйте рассмотренную функцию осторожно. Всегда нужно контролировать выражение, которое принимает eval()
. Если оно было передано извне, например другими пользователями, то это может навредить вашей системе.
Байты – это последовательность, которая, в отличие от строк, состоит из отдельных байтов. Их синтаксис примерно такой же, как и у обычной последовательности символов. Единственное отличие – это префикс b
, расположенный перед началом последовательности.
С преобразованием строк в байты в Python нам поможет функция encode()
. Она выполнит кодировку необходимой последовательности символов и вернет строку байтов. Все, что нужно указать при ее вызове – это имя кодировки. По умолчанию используется utf-8.
Рассмотрим использование encode()
на примере:
example_string = "Hello, user!"
example_bytes = example_string.encode()
print(example_bytes)
В результате мы получили байтовую версию указанной строки в переменной example_string
, как показано на картинке ниже.
Если пользователь захочет декодировать объект байтов обратно в исходный вид, то он может использовать функцию decode()
.
Словарь – это некая структура данных, которая хранит пары в виде «Ключ — Значение».
В данной главе рассмотрим два способа преобразования строки в словарь в Python.
Первая рассматриваемая функция json.loads()
относится к модулю json
. Она принимает исходную последовательность символов в формате JSON и преобразует ее в словарь.
В начале написания кода обязательно импортируем модуль json
.
Пример:
import json
json_string = '{"animal": "Dog", "breed": "Labrador", "age": 9}'
result = json.loads(json_string)
print(result)
Как итог, мы получили словарь с 3 парами, продемонстрированный на картинке ниже.
Следующей метод, который мы рассмотрим в данной главе, – ast.literal_eval()
. Он принадлежит модулю ast
и выполняет ту же функцию, что и прошлый метод.
Перейдем сразу к примеру, не забывая в начале кода импортировать нужный модуль:
import ast
example_string = "{'animal': 'Dog', 'breed': 'Labrador', 'age': 9 }"
result = ast.literal_eval(example_string)
print(result)
Здесь мы использовали те же данные, что и в прошлом примере. В результате мы получили точно такой же словарь, как и при использовании метода json.loads()
.
Единственное отличие метода ast.literal_eval()
от прошлого в том, что последовательность символов, которую он принимает, должна быть в формате словаря, а не в формате JSON.
В данной инструкции мы рассмотрели 7 преобразований строк в другие типы данных. Кроме того, к каждому из них мы привели примеры и альтернативные способы преобразования. Надеемся, полученная из этой статьи информация поможет вам правильно взаимодействовать со строковым типом данных при написании кода.