- 3 способа преобразования строки в список в Python
- Что такое строка?
- Что такое список?
- Зачем преобразовывать строку в список в Python?
- Преобразование строки в список в Python
- Преобразование строки в список с помощью методов strip() и split()
- Преобразование с помощью модуля AST(Abstract Syntax Trees)
- Преобразование строки в список с помощью метода json.loads()
- Заключение
- Convert String to List in Python
- Upskill 2x faster with Educative
- Methods of converting a string to a list in Python
- 1. String to List of Strings
- 2. String to List of Characters
- 3. List of Strings to List of Lists
- 4. CSV to List
- 5. A string consisting of Integers to a List of integers
- Conclusion
- 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() разбивает строку на список, используя указанную строку-разделитель в качестве разделителя.
Convert String to List in Python
While programming we may need to convert a string to a list in Python. That could be for any other reason. But, a question arises here, how can we convert a string to different forms of lists?
So, here in this tutorial, we will learn how to convert a string into a list in Python.
Upskill 2x faster with Educative
Supercharge your skillset with Educative Python courses → use code: ASK15 to save 15%
Methods of converting a string to a list in Python
Conversion of a string to a list in Python is a pretty easy job. It can be achieved by following different methods as per our requirements.
Here in this tutorial, we are going to deal with all the methods using which we can convert a string to a list in Python for different cases. Below we have listed all the methods:
- A String to List of Strings
- A String to List of Characters
- List of Strings to List of Lists
- CSV to List
- A string consisting of Integers to a List of integers
Now we are going to discuss each one of the above-mentioned techniques one by one.
1. String to List of Strings
When we need to convert a string to a list in Python containing the constituent strings of the parent string (previously separated by some separator like ‘,’ or space), we use this method to accomplish the task.
For example, say we have a string “Python is great”, and we want a list that would contain only the given names previously separated by spaces, we can get the required list just by splitting the string into parts based on the position of space.
Let us look at an example to understand it better.
#given string string1="Python is great" #printing the string print("Actual String: ",string1) #gives us the type of string1 print("Type of string: ",type(string1)) print("String converted to list :",string1.split()) #prints the list given by split()
- We consider a string, string1=»Python is great» and try to convert the same list of the constituent strings
- type() gives us the type of object passed to the method, which in our case was a string
- split() is used to split a string into a list based on the given separator. In our code, the words were separated by spaces. By default, if we do not pass anything to the split() method it splits up the string based on the position of spaces
- Hence though we have not mentioned the separator parameter, the split() method gives us a list of the respective strings
2. String to List of Characters
What if we need a list of characters present in a string? In that case, direct type conversion from string to list in Python using the list() method does the job for us.
Certainly, if the input string is something like “abcd”, typecasting the string into a list using the list() method gives us a list having the individual characters ‘a’, ‘b’, ‘c’, ‘d’ as its elements. Take a look at the given example code below.
#given string string1="AskPython" #printing the string print("Actual String: ",string1) #confirming the type() print("Type of string: ",type(string1)) #type-casting the string into list using list() print("String converted to list :\n",list(string1))
- Firstly here, we initialize a string, string1 as “AskPython” and print its type using the type() method
- And as we can observe, typecasting the string using the list() method gives us a list of the member characters, as required
3. List of Strings to List of Lists
Here, we are going to see how we can combine both the above methods to convert a string to a list of character lists.
Look at the below-given example carefully,
#Given string string1="This is Python" print("The actual string:",string1) #converting string1 into a list of strings string1=string1.split() #applying list method to the individual elements of the list string1 list1=list(map(list,string1)) #printing the resultant list of lists print("Converted to list of character list :\n",list1)
- In this case, after the initialization of the string string1 , we use the first method and convert it into a list of strings
- That is, at this point string1 is a list of strings given by [ ‘This’, ‘is’, ‘Python’ ]
- Then we apply the list() method to all the elements of the list
- string1. As we saw in our previous case this gives us a list consisting of character lists. Note, mass type-casting was performed using the map() function
4. CSV to List
A CSV( Comma Separated Values) string, as its name suggests is a string consisting of values or data separated by commas.
Let us look at how we can convert the such type of string to a list in Python.
#given string string1="abc,def,ghi" print("Actual CSV String: ",string1) print("Type of string: ",type(string1)) #spliting string1 into list with ',' as the parameter print("CSV converted to list :",string1.split(','))
- Similarly, we initiate by considering a string string1 with various data or values separated by commas(‘,’)
- After printing it and its type() , we proceed by splitting it based on the parameter ‘,’
- This makes the values ‘abc’, ‘def’, and ‘ghi’ the elements of a list. In this way, we were able to extract values from a given CSV
5. A string consisting of Integers to a List of integers
Now we are going to convert a string consisting of only integers separated by some space, comma, etc., to a list with integer elements.
For example, look at the code below,
#string with integers sepated by spaces string1="1 2 3 4 5 6 7 8" print("Actual String containing integers: ",string1) print("Type of string: ",type(string1)) #converting the string into list of strings list1=list(string1.split()) print("Converted string to list : ",list1) #typecasting the individual elements of the string list into integer using the map() method list2=list(map(int,list1)) print("List of integers : ",list2)
- We took a string, string1 as “1 2 3 4 5 6 7 8” and print it and its type() consecutively
- Then we split it using the split() method and store the resultant list into a list, list1. At this point, list1 holds [ ‘1’, ‘2’ , ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’ ] as we can see from the output, as expected
- Now we map the function int() throughout the list, typecasting each one of the elements into integers. And further, we store the typecasted mapped list into list2 and print the same
- As a result, we get a list consisting of the integer elements on which now we can perform arithmetic operations.
Conclusion
That’s all now, this was about converting strings into different lists using various methods. Try to use the one which suits your code and solves your purpose as well as meets up to your requirements. Questions in the comments are appreciated.