Строка и список – одни из самых используемых типов данных в Python. Преобразование их из одного в другой является распространенной задачей в реальных проектах.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Что такое строка?
Строка – это массив байтов, представляющих символы Unicode. В Python нет встроенного символьного типа данных, но отдельный символ – это просто строка длиной 4 байт.
Что такое список?
В Python нет встроенного типа массива, но есть тип данных список. Списки могут помочь нам хранить несколько элементов в одной переменной.
Зачем преобразовывать строку в список в Python?
Преобразование из строки в список важно потому, что список может хранить несколько элементов в одной переменной, являясь изменяемым типом данных, в то время как строка неизменяема. Элементы списка упорядочены, могут изменяться и допускают дублирование значений. Реальный пример задачи по преобразования строки в список: получить список id
участников мероприятия который мы получили с сайта в виде строки с id
, разделенными запятой (134,256,321,
434). Если мы просто будем перебирать символы, то это не будет работать так, как нам это нужно.
Преобразование строки в список в Python
Чтобы преобразовать строку в список в Python, используйте метод string
split()
. Метод split()
– это встроенный метод, который разделяет строки, сохраняет их в списке и возвращает список строк в исходной строке, используя “разделитель”.
Если разделитель не указан в аргументе функции или равен None, то применяется другой алгоритм разбиения: пробелы, идущие подряд, рассматриваются как единый разделитель.
Результат не будет содержать пустых строк в начале или конце, если в строке есть ведущий или завершающий пробел.
# app.py def stringToList(string): listRes = list(string.split(" ")) return listRes strA = "Millie Bobby Brown" print(stringToList(strA))
Посмотрите выходные данные.
➜ python3 app.py ['Millie', 'Bobby', 'Brown']
Вы можете проверить тип данных, используя функцию type().
# app.py def stringToList(string): listRes = list(string.split(" ")) return listRes strA = "Millie Bobby Brown" print(type(stringToList(strA)))
Вывод:
➜ python3 app.py <class 'list'>
Преобразование строки в список с помощью методов strip() и split()
Метод strip()
возвращает копию строки с удаленными начальными и конечными символами на основе переданного аргумента строки.
Метод strip()
удаляет символы слева и справа в зависимости от аргумента.
# app.py initial_list = "[11, 21, 29, 46, 19]" print ("initial string", initial_list) print (type(initial_list)) op = initial_list.strip('][').split(', ') print ("final list", op) print (type(op))
Вывод:
➜ python3 app.py initial string [11, 21, 29, 46, 19] <class 'str'> final list ['11', '21', '29', '46', '19'] <class 'list'>
Здесь мы определили строку, которая выглядит как список.
Затем мы используем метод strip() и split() для преобразования строки в список, и, наконец, выводим список и его тип – для двойной проверки.
Преобразование с помощью модуля AST(Abstract Syntax Trees)
Модуль AST помогает приложениям Python обрабатывать деревья абстрактной синтаксической грамматики.
Абстрактный синтаксис может меняться с каждым выпуском Python; этот модуль помогает программно определить, как выглядит текущая грамматика.
У этого модуля есть замечательный метод ast.literal_eval(node_or_string
) . Метод позволяет извлечь из строки структуры, такие как строки, байты, числа, кортежи, списки, словари, множества, були и None
.
# app.py import ast ini_list = "[11, 21, 19, 46, 29]" # выведем нужную нам строку и убедимся что это именно строка print("initial string", ini_list) print(type(ini_list)) # преобразуем строку в список res = ast.literal_eval(ini_list) # выведем результат print("final list", res) print(type(res))
Вывод:
➜ python3 app.py initial string [11, 21, 19, 46, 29] <class 'str'> final list [11, 21, 19, 46, 29] <class 'list'>
Преобразование строки в список с помощью метода json.loads()
Существует третий способ преобразования строки Python в список с помощью метода json.loads()
.
# app.py import json # инициализируем строковое представление списка initial_list = "[11, 21, 19, 46, 29]" # выведем нужную нам строку и убедимся что это именно строка print("initial string", initial_list) print(type(initial_list)) # преобразуем строку в список op = json.loads(initial_list) # выведем результат print("final list", op) print(type(op))
Вывод:
➜ python3 app.py initial string [11, 21, 19, 46, 29] <class 'str'> final list [11, 21, 19, 46, 29] <class 'list'>
Сначала нам нужно импортировать модуль json
, а затем использовать метод json.loads()
для преобразования строки в формат списка. Будьте внимательны к тому как выглядит сам список. Json не сможет преобразовать обернутые в одинарные кавычки '
значения, так как данный формат предполагает использование двойных кавычек "
, а значения вообще не обернутые в кавычки будут преобразованы к числам а не строкам.
Заключение
Преобразование строки в список в Python может быть выполнено несколькими способами. Самый простой способ – использовать метод split()
. Метод split()
разбивает строку на список, используя указанную строку-разделитель в качестве разделителя.
Перевод статьи «3 Easy Ways to Convert String to List in Python».
АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА