- Python – Convert String to List
- Converting List-type strings
- Method 1: Using the ast module
- Method 2: Using the json module
- Method 3: Using str.replace() and str.split()
- Converting Comma separated Strings
- Method 1: Using str.split(‘,’)
- Method 2: Using eval()
- Conclusion
- References
- 3 способа преобразования строки в список в Python
- Что такое строка?
- Что такое список?
- Зачем преобразовывать строку в список в Python?
- Преобразование строки в список в Python
- Преобразование строки в список с помощью методов strip() и split()
- Преобразование с помощью модуля AST(Abstract Syntax Trees)
- Преобразование строки в список с помощью метода json.loads()
- Заключение
Python – Convert String to List
In Python, if you ever need to deal with codebases that perform various calls to other APIs, there may be situations where you may receive a string in a list-like format, but still not explicitly a list. In situations like these, you may want to convert the string into a list.
In this article, we will look at some ways of achieving the same on Python.
Converting List-type strings
A list-type string can be a string that has the opening and closing parenthesis as of a list and has comma-separated characters for the list elements. The only difference between that and a list is the opening and closing quotes, which signify that it is a string.
str_inp = '["Hello", "from", "AskPython"]'
Let us look at how we can convert these types of strings to a list.
Method 1: Using the ast module
Python’s ast (Abstract Syntax Tree) module is a handy tool that can be used to deal with strings like this, dealing with the contents of the given string accordingly.
We can use ast.literal_eval() to evaluate the literal and convert it into a list.
import ast str_inp = '["Hello", "from", "AskPython"]' print(str_inp) op = ast.literal_eval(str_inp) print(op)
'["Hello", "from", "AskPython"]' ['Hello', 'from', 'AskPython']
Method 2: Using the json module
Python’s json module also provides us with methods that can manipulate strings.
In particular, the json.loads() method is used to decode JSON-type strings and returns a list, which we can then use accordingly.
import json str_inp = '["Hello", "from", "AskPython"]' print(str_inp) op = json.loads(str_inp) print(op)
The output remains the same as before.
Method 3: Using str.replace() and str.split()
We can use Python’s in-built str.replace() method and manually iterate through the input string.
We can remove the opening and closing parenthesis while adding elements to our newly formed list using str.split(«,») , parsing the list-type string manually.
str_inp = '["Hello", "from", "AskPython"]' str1 = str_inp.replace(']','').replace('[','') op = str1.replace('"','').split(",") print(op)
Converting Comma separated Strings
A comma-separated string is a string that has a sequence of characters, separated by a comma, and enclosed in Python’s string quotations.
str_inp = "Hello,from,AskPython'
To convert these types of strings to a list of elements, we have some other ways of performing the task.
Method 1: Using str.split(‘,’)
We can directly convert it into a list by separating out the commas using str.split(‘,’) .
str_inp = "Hello,from,AskPython" op = str_inp.split(",") print(op)
Method 2: Using eval()
If the input string is trusted, we can spin up an interactive shell and directly evaluate the string using eval() .
However, this is NOT recommended, and should rather be avoided, due to security hazards of running potentially untrusted code.
Even so, if you still want to use this, go ahead. We warned you!
str_inp = "potentially,untrusted,code" # Convert to a quoted string so that # we can use eval() to convert it into # a normal string str_inp = "'" + str_inp + "'" str_eval = '' # Enclose every comma within single quotes # so that eval() can separate them for i in str_inp: if i == ',': i = "','" str_eval += i op = eval('[' + str_eval + ']') print(op)
The output will be a list, since the string has been evaluated and a parenthesis has been inserted to now signify that it op is a list.
['potentially', 'untrusted', 'code']
This is quite long and is not recommended for parsing out comma-separated strings. Using str.split(‘,’) is the obvious choice in this case.
Conclusion
In this article, we learned some ways of converting a list into a string. We dealt with list-type strings and comma-separated strings and converted them into Python lists.
References
3 способа преобразования строки в список в Python
Строка и список – одни из самых используемых типов данных в Python. Преобразование их из одного в другой является распространенной задачей в реальных проектах.
Что такое строка?
Строка – это массив байтов, представляющих символы 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)))
Преобразование строки в список с помощью методов 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] final list [’11’, ’21’, ’29’, ’46’, ’19’]
Здесь мы определили строку, которая выглядит как список.
Затем мы используем метод 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] final list [11, 21, 19, 46, 29]
Преобразование строки в список с помощью метода 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] final list [11, 21, 19, 46, 29]
Сначала нам нужно импортировать модуль json , а затем использовать метод json.loads() для преобразования строки в формат списка. Будьте внимательны к тому как выглядит сам список. Json не сможет преобразовать обернутые в одинарные кавычки ‘ значения, так как данный формат предполагает использование двойных кавычек » , а значения вообще не обернутые в кавычки будут преобразованы к числам а не строкам.
Заключение
Преобразование строки в список в Python может быть выполнено несколькими способами. Самый простой способ – использовать метод split() . Метод split() разбивает строку на список, используя указанную строку-разделитель в качестве разделителя.