Строка и список — одни из самых используемых типов данных в 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».

АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА