Преобразование строки в список в Python
Мы можем преобразовать строку в список в Python, используя функцию split().
Синтаксис функции split():
str.split(sep=None, maxsplit=-1)
Давайте посмотрим на простой пример, в котором мы хотим преобразовать строку в список слов, то есть разделить ее разделителем на пробелы.
s = 'Welcome To JournalDev' print(f'List of Words =')
Вывод: Список слов = [‘Welcome’, ‘To’, ‘JournalDev’].
Если мы хотим разбить строку на список на основе пробелов, нам не нужно предоставлять какой-либо разделитель для функции split(). Кроме того, перед разделением строки на список слов удаляются любые начальные и конечные пробелы. Таким образом, результат останется таким же и для строки s = ‘Welcome To JournalDev’.
Давайте посмотрим на другой пример, где у нас есть данные CSV в строку, и мы преобразуем ее в список элементов.
s = 'Apple,Mango,Banana' print(f'List of Items in CSV =')
Вывод: Список элементов в CSV = [‘Apple’, ‘Mango’, ‘Banana’].
Преобразование в список символов
Python String – это последовательность символов. Мы можем преобразовать его в список символов, используя встроенную функцию list(). При преобразовании строки в список символов пробелы также рассматриваются как символы. Кроме того, если есть начальные и конечные пробелы, они также являются частью элементов списка.
s = 'abc$ # 321 ' print(f'List of Characters =')
Вывод: Список символов = [‘a’, ‘b’, ‘c’, ‘$’, », ‘#’, », ‘3’, ‘2’, ‘1’, »].
Если вы не хотите, чтобы начальные и конечные пробелы были частью списка, вы можете использовать функцию strip() перед преобразованием в список.
s = ' abc ' print(f'List of Characters =')
Вывод: Список символов = [‘a’, ‘b’, ‘c’].
Преобразование строк в список, кортеж или множество символов
Для преобразования строки в список символов необходимо исходную строку передать в класс list() . Это полезно для каких то преобразований в цикле с отдельными символами в строке (удаление/добавление/изменение) или если нужно отобразить строку наоборот (развернуть строку).
Пример преобразования строки в список символов и совершение различных манипуляции.
>>> line = 'абракадабра' >>> line_list = list(line) >>> line_list # ['а', 'б', 'р', 'а', 'к', 'а', 'д', 'а', 'б', 'р', 'а'] # изменим 4 символ на 'у', добавим в конец 'с' и удалим 1 символ >>> line_list[3] = 'y' >>> line_list.append('c') >>> line_list.pop(0) >>> line_list # ['б', 'р', 'y', 'к', 'а', 'д', 'а', 'б', 'р', 'а', 'c'] # развернем строку >>> rev = list(reversed(line_list)) >>> rev # ['c', 'а', 'р', 'б', 'а', 'д', 'а', 'к', 'y', 'р', 'б'] # теперь снова получим строку >>> line = ''.join(rev) >>> line # 'cарбадакyрб'
Преобразование строки в кортеж производится аналогичным способом, только строка передается в класс tuple() . Кортеж это неизменяемый тип данных, следовательно дальнейшие изменения кортежа недоступны.
# преобразование строки в кортеж символов >>> line = 'абракадабра' >>> line_tuple = tuple(line) >>> line_tuple # ('а', 'б', 'р', 'а', 'к', 'а', 'д', 'а', 'б', 'р', 'а') # теперь снова получим строку >>> line = ''.join(line_tuple) # 'абракадабра'
Преобразование строки в множество полезно, когда необходимо получить уникальные символы в строке (без повторов). Обратите внимание на то, что после преобразования строки в множество порядок следования символов не сохраняется!
# преобразование строки в множество символов >>> line = 'абракадабра' >>> line_set = set(line) >>> line_set #
Преобразование символов строки в код ASCII и обратно.
В Python есть возможность выполнить преобразование одиночного символа в его целочисленный код ASCII, для чего нужно передать этот символ функции ord() , она возвращает фактическое числовое значение соответствующего байта в памяти. Обратное преобразование выполняется с помощью функции chr() , она получает целочисленный код ASCII и преобразует его в соответствующий символ:
>>> ord('s') # 115 >>> chr(115) # 's'
Эти функции можно применить ко всем символам строки в цикле. Например, чтобы получить следующий по алфавиту символ, его можно преобразовать в число и выполнить математическое действие над ним:
>>> x = 'А' >>> y = ord(x) + 1 >>> chr(y) # 'Б'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Преобразование строки в число
- Строку в список, кортеж или множество символов
- Одинарные, двойные и тройные кавычки в строке Python
- Вывод специальных символов в строке Python «как есть»
- Объединение и повторение строк
- Индексирование строк
- Использование срезов строк
- Cрез строки Python от заданного символа/знака до конца строки
- Создание макета для печати базовыми методами строк
- Способы форматирования текстовых строк
- Подсчет повторений слов в тексте, деление строки на список слов
- Удаление слова из строки Python по фрагменту или шаблону
- Удаление пунктуации из строки
- Деление строки по заглавным буквам
- Создание отчетов и писем по шаблонам
Преобразование строки в список с сортировкой в лексикографическом порядке
Как преобразовать строку, состоящую из слов разделенных пробелами, в список, и отсортировать полученный список в лексикографическом порядке? Дана строка из слов, разделенных пробелами:
s = 'abc a bCd bC AbC BC BCD bcd ABC'
преобразовываем ее в список, с разделителем «пробел»:
a = s.split(' ')
['abc', 'a', 'bCd', 'bC', 'AbC', 'BC', 'BCD', 'bcd', 'ABC']
если теперь сделать так:
a = a.sort() print (a)
мы не получим ничего, если так:
b = a.sort() print (a)
получим отсортированный список
['ABC', 'AbC', 'BC', 'BCD', 'a', 'abc', 'bC', 'bCd', 'bcd']
почему так? можно ли как-то совместить sort() и split() в одной строчке?
Отслеживать
77k 6 6 золотых знаков 56 56 серебряных знаков 123 123 бронзовых знака
задан 21 мар 2016 в 11:57
Sergey Mokhin Sergey Mokhin
363 3 3 золотых знака 5 5 серебряных знаков 12 12 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
a = sorted(s.split(' '))
В обратном порядке:
a = sorted(s.split(' '), reverse=True)
Отслеживать
ответ дан 21 мар 2016 в 12:15
77k 6 6 золотых знаков 56 56 серебряных знаков 123 123 бронзовых знака
Потому что a.sort() просто сортирует a (список «просто» становится отсортированным), и ничего не возвращает, а функции не возвращающие ничего в Python по факту возвращают None . Если сделать a = a.sort() , вы сначала отсортируете a , а потом запишите поверх него None .
Нужно делать или так:
a = a.split(' ') a.sort() print(a)
Или так, если вам нужно одной строкой:
print(sorted(a.split(' '))
Разница в том, что метод list.sort() меняет исходный список, и ничего не возвращает, а функция sorted() не меняет исходный список, а возвращает его отсортированную копию.
Python: Как преобразовать список в строку?
В этом коротком руководстве мы рассмотрим различные методы, которые можно использовать для преобразования списка Python в строку.
Зачем преобразовывать список Python в строку?
Преобразование списка Python в строку является обычным явлением, хотя наиболее распространенный случай использования, с которым я столкнулся, — это преобразование итерируемого объекта в строку, чтобы его можно было отобразить. Python предоставляет нам несколько способов преобразования списков Python в строку, эти методы не имеют конкретных ограничений для сравнения, и, следовательно, это сводится только к пониманию и удобству программистов этого метода.
Если это не так, я бы порекомендовал это решение, если вы новичок. Но не стесняйтесь пройти их все, если вам интересно их изучить.
Способы преобразования списка Python в строки
Используя join():
Наиболее распространенным и питоническим способом преобразования списка python в строку является использование метода join() . Он принимает итеративные объекты, последовательно присоединяет и возвращает их в виде строки. Однако значения в iterable должны иметь строковый тип данных, и в случае, если iterable содержит int, вы можете использовать второй метод.
string.join(iterable)
Здесь string является разделителем
iterable — Любой итерируемый объект — список, кортежи, набор и т.д.
Код для преобразования списка Python в строку с помощью join():
flexiple = ["Hire", "the", "top", "freelancers"] print(" ".join(flexiple)) #Output - "Hire the top freelancers"
Поскольку разделителем был пробел, строка содержит символы в списке, разделенные строкой.
Как упоминалось выше, попытка использовать итерацию, содержащую объект int , вернет typeerror . Следующее решение покажет вам, как это обойти.
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(flexiple))
Использование join() и map():
Поскольку методы join() принимают только строковые значения, мы используем map() для преобразования значений int в строку перед преобразованием списка python в строку. Методы map() выполняют определенную функцию для всех значений в итерации.
map(function, iterables)
function — Конкретная функция, которую вы хотите выполнить
iterable — Итерируемый объект, содержащий значения
Таким образом, передавая функцию str() , которая преобразует объекты в строку, мы можем преобразовать значения типа int, а затем объединить их в строку.
Код для преобразования списка Python в строку с помощью map() :
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(map(str,flexiple))) #Output - "Hire the top 10 python freelancers"
Использование цикла:
Третий метод преобразования списка Python в строку — это написать цикл и добавить каждую итерацию в строку. Я бы предложил этот метод, если вы новичок в Python и не знакомы с такими понятиями, как join() и map() т.д. Код может быть длиннее, но он будет более читабельным для новичка.
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] f1 = "" for i in flexiple: f1 += str(i)+ " " print(f1) #Output = "Hire the top 10 python freelancers "