3 способа преобразования строки в список в Python

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *