Строка в список python: Как преобразовать строку в список в Python?
Как преобразовать строку в список в Python?
как преобразовать строку в список?
говорят строки типа text = "a,b,c"
. После обращения,text == ['a', 'b', 'c']
и надеюсь text[0] == 'a'
, text[1] == 'b'
?
11 ответов
такой:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
кроме того, вы можете использовать eval()
Если Вы доверяете строке, чтобы быть в безопасности:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
просто чтобы добавить к существующим ответам: надеюсь, вы столкнетесь с чем-то подобным в будущем:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
но с чем вы имеете дело прямо сейчас перейдите с @Камерон’ы ответ.
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
следующий код Python превратит вашу строку в список строк:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
в python вам редко нужно конвертировать строку в список, потому что строки и списки очень похожи
изменение типа
если у вас действительно есть строка, которая должна быть массивом символов, этого:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
не изменять тип
обратите внимание, что строки очень похожи на списки в python
строки имеют аксессоры, например списки
In [3]: x[0]
Out[3]: 'f'
строки являются итерационными, как списки
In [4]: for i in range(len(x)):
...: print x[i]
...:
f
o
o
b
a
r
TLDR
строки списков. Почти.
Если вы действительно хотите массивов:
>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'
Если вам не нужны массивы и вы хотите смотреть только по индексу на свои символы, помните, что строка является итерабельной, как и список, за исключением того, что она неизменна:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
В случае, если вы хотите разделить пробелами, вы можете просто использовать .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
выход:
['mary', 'had', 'a', 'little', 'lamb']
3
автор: vivek mishra
Я обычно использую:
l = [ word.strip() for word in text.split(',') ]
на strip
удалить пробелы вокруг слова.
1
автор: Yannick Loiseau
преобразование string
имеющие форму a="[[1, 3], [2, -6]]"
Я написал еще не оптимизированный код:
matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
matrixAr.append(row)
print matrixAr
m = '[[1,2,3],[4,5,6],[7,8,9]]'
m= eval(m.split()[0])
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# to strip `,` and `.` from a string ->
>>> 'a,b,c.'.translate(None, ',.')
'abc'
вы должны использовать встроенный translate
метод для строк.
тип help('abc'.translate)
в оболочке Python для получения дополнительной информации.
использование функционального Python:
text=filter(lambda x:x!=',',map(str,text))
0
автор: Eratosthenes
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» | Литералы строк |
S = «s\np\ta\nbbb» | Экранированные последовательности |
S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
S = b»byte» | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S[i] | Обращение по индексу |
S[i:j:step] | Извлечение среза |
len(S) | Длина строки |
S.find(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена) | Замена шаблона |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip([chars]) | Удаление пробельных символов в начале строки |
S.rstrip([chars]) | Удаление пробельных символов в конце строки |
S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
Красивый Питон. Как использовать списки в Python.
Эта статья для тех, кто хочет писать чистый, красивый и легко читаемый код, от которого текут слюни при чтении. Если вы из таких людей — значит, мыслите правильно. Ведь если вы работаете в команде, или разрабатываете открытое ПО — необходимо, чтобы код могли прочитать другие разработчики — возможно, тысяча других людей. Как использовать списки в Python?
Да что уж там — однажды и самому придется вернуться к проекту, который был заброшен несколько месяцев назад. А ведь порой бывает так, что с трудом разбираешь код, который относительно недавно написал собственными пальцами.
Не важно, пишите ли вы большой проект или небольшой скрипт на один раз. К любому кусочку кода не помешает приложить немного усилий, чтобы сделать его лаконичным. Лучше делать это по шагам — например, сначала правильно написать циклы. Следует всегда думать, как оптимизировать и улучшить код — и тогда вы ощутите, как ваши скрипты и функции улучшились.
Сегодня — второй пост из серии статей об идиомах в Python, в котором рассмотрим работу со списками.
Как работать со списками в Python?
Списки — достаточно широко используемая структура данных, для которой можно найти массу применений. Это один из типов последовательности в Питоне — а значит, к ним можно применять встроенные в язык методы. Их можно передавать в качестве аргумента функциям.
При работе со списками часто есть несколько способов сделать что-либо. Но всегда есть способ, который проще, быстрее и читабельнее других. Не нужно объяснять, почему нужно использовать именно их.
Создание списка в Python
Временами требуется инициализировать список из X значений. Как это сделать правильно?
#Вот так список создавать не надо new_list = [] for x in range(10): new_list[x] = None #А вот так надо. Одна строка вместо трех. new_list = [None] * 10
Как видите, весьма компактный способ. Просто умножьте значение на количество раз, которое оно должно быть в списке.
Генераторы списков в Python
На самом деле, генераторы списков (list comprehensions) — это достаточно обширная тема. А еще это универсальный инструмент, который достаточно часто помогает. Почитайте документацию.
#Пример генерации списка list_1 = range(1, 101) list_comp = [val for val in list_1 if val % 2 == 0]
Пример выше создает из переменной list_1, содержащей все целые числа от 1 до 100, список, содержащий только четные числа (те, которые делятся 2). Этот прием можно использовать как: [f(x) for x in список (условия)] , где f(x) — некоторая функция от x, а условия — необязательный блок с условными операторами. Так же допускается вложенность.
Список в строку Python
Соединение списка в строку — задача, которая возникает достаточно часто. В Python это сделать предельно просто, однако не всегда интуитивно понятно как.
#Вот так хочется сделать, но не надо strings = ["H", "e", "l", "l", "o"] string = '' for char in strings: string = string + char #А вот так надо, и это проще первого варианта strings = ["H", "e", "l", "l", "o"] string = ''.join(strings)
Как видно из примера, классный способ превратить список в строку — вызвать функцию join(), передав в качестве аргумента список, который нужно соединить.
Пожалуй, о списках все. Уверен, что вы будете часто использовать списки в Python, так что постарайтесь запомнить эти простые вещи, описанные в статье. К сожалению, я тоже наступал на грабли и не использовал вещи, описанные выше. Функциональность кода от этого не страдала, а вот внешний вид и читаемость — достаточно сильно.
Спасибо Jamal Moir за замечательные советы.
Разделение строки на списки в Python
В этой статье мы расскажем, как можно разбивать строки на списки. Вы узнаете, как при этом использовать разделители (в частности — как отделять часть строки только по первому разделителю и как быть с последовательно идущими разделителями) и регулярные выражения. Безусловно, эта информация будет особенно полезна начинающим питонистам, но, возможно, и более опытные найдут для себя кое-что интересное.
Простое разделение строки
и получение списка ее составляющих
Если вы хотите разбить любую строку на подстроки и составить из них список, вы можете просто воспользоваться методом split(sep=None, maxsplit=-1)
. Этот метод принимает два параметра (опционально). Остановимся пока на первом из них — разделителе (sep
).
Разделитель можно задать явно в
качестве параметра, но можно и не
задавать: в этом случае в его роли
выступает пробел.
Пример использования метода split()
без указания разделителя:
print("Python2 Python3 Python Numpy".split()) print("Python2, Python3, Python, Numpy".split())
Результат:
['Python2', 'Python3', 'Python', 'Numpy'] ['Python2,', 'Python3,', 'Python,', 'Numpy']
Разделение строки с
использованием разделителя
Python может разбивать строки по любому разделителю, указанному в качестве параметра метода split()
. Таким разделителем может быть, например, запятая, точка или любой другой символ (или даже несколько символов).
Давайте рассмотрим пример, где в
качестве разделителя выступает запятая
и точка с запятой (это можно использовать
для работы с CSV-файлами).
print("Python2, Python3, Python, Numpy".split(',')) print("Python2; Python3; Python; Numpy".split(';'))
Результат:
['Python2', ' Python3', ' Python', ' Numpy'] ['Python2', ' Python3', ' Python', ' Numpy']
Как видите, в результирующих списках
отсутствуют сами разделители.
Если вам нужно получить список, в
который войдут и разделители (в качестве
отдельных элементов), можно разбить
строку по шаблону, с использованием
регулярных выражений (см. документацию
re.split). Когда вы берете шаблон в
захватывающие круглые скобки, группа
в шаблоне также возвращается как часть
результирующего списка.
import re sep = re.split(',', 'Python2, Python3, Python, Numpy') print(sep) sep = re.split('(,)', 'Python2, Python3, Python, Numpy') print(sep)
Результат:
['Python2', ' Python3', ' Python', ' Numpy'] ['Python2', ',', ' Python3', ',', ' Python', ',', ' Numpy']
Если вы хотите, чтобы разделитель был частью каждой подстроки в списке, можно обойтись без регулярных выражений и использовать list comprehensions:
text = 'Python2, Python3, Python, Numpy' sep = ',' result = [x+sep for x in text.split(sep)] print(result)
Результат:
['Python2,', ' Python3,', ' Python,', ' Numpy,']
Разделение многострочной
строки (построчно)
Создать список из отдельных строчек многострочной строки можно при помощи того же метода split()
, указав в качестве разделителя символ новой строки \n
. Если текст содержит лишние пробелы, их можно удалить при помощи методов strip()
или lstrip()
:
str = """ Python is cool Python is easy Python is mighty """ list = [] for line in str.split("\n"): if not line.strip(): continue list.append(line.lstrip()) print(list)
Результат:
['Python is cool', 'Python is easy', 'Python is mighty']
Разделение строки-словаря
и преобразование ее в списки или словарь
Допустим, у нас есть строка, по сути являющаяся словарем и содержащая пары ключ-значение в виде key => value
. Мы хотим получить эти пары в виде списков или настоящего словаря. Вот простой пример, как получить словарь и два списка:
dictionary = """\ key1 => value1 key2 => value2 key3 => value3 """ mydict = {} listKey = [] listValue = [] for line in dictionary.split("\n"): if not line.strip(): continue k, v = [word.strip() for word in line.split("=>")] mydict[k] = v listKey.append(k) listValue.append(v) print(mydict) print(listKey) print(listValue)
Результат:
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'} ['key1', 'key2', 'key3'] ['value1', 'value2', 'value3']
Отделение указанного
количества элементов
Метод split()
имеет еще один опциональный параметр — maxsplit
. С его помощью можно указать, какое максимальное число «разрезов» нужно сделать. По умолчанию maxsplit=-1
, это означает, что число разбиений не ограничено.
Если вам нужно отделить от строки несколько первых подстрок, это можно сделать, указав нужное значение maxsplit
. В этом примере мы «отрежем» от строки первые три элемента, отделенные запятыми:
str = "Python2, Python3, Python, Numpy, Python2, Python3, Python, Numpy" data = str.split(", ",3) for temp in data: print(temp)
Результат:
Python2 Python3 Python Numpy, Python2, Python3, Python, Numpy
Разделение строки при помощи
последовательно идущих разделителей
Если вы для разделения строки используете метод split()
и не указываете разделитель, то разделителем считается пробел. При этом последовательно идущие пробелы трактуются как один разделитель.
Но если вы указываете определенный разделитель, ситуация меняется. При работе метода будет считаться, что последовательно идущие разделители разделяют пустые строки. Например, '1,,2'.split(',') вернет ['1', '', '2']
.
Если вам нужно, чтобы последовательно
идущие разделители все-таки трактовались
как один разделитель, нужно воспользоваться
регулярными выражениями. Разницу можно
видеть в примере:
import re print('Hello1111World'.split('1')) print(re.split('1+', 'Hello1111World' ))
Результат:
['Hello', '', '', '', 'World'] ['Hello', 'World']
41 вопрос о работе со строками в Python / Блог компании RUVDS.com / Хабр
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.
Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.
Хочу сегодня поделиться со всеми желающими моей шпаргалкой по работе со строками в Python. Я оформил её в виде списка вопросов, который использую для самопроверки. Хотя эти вопросы и не тянут на полноценные задачи, которые предлагаются на собеседованиях, их освоение поможет вам в решении реальных задач по программированию.
1. Как проверить два объекта на идентичность?
Оператор is
возвращает True
в том случае, если в две переменные записана ссылка на одну и ту же область памяти. Именно об этом идёт речь при разговоре об «идентичности объектов».
Не стоит путать is
и ==
. Оператор ==
проверяет лишь равенство объектов.
animals = ['python','gopher']
more_animals = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False
Обратите внимание на то, что animals
и even_more_animals
не идентичны, хотя и равны друг другу.
Кроме того, существует функция id()
, которая возвращает идентификатор адреса памяти, связанного с именем переменной. При вызове этой функции для двух идентичных объектов будет выдан один и тот же идентификатор.
name = 'object'
id(name)
#=> 4408718312
2. Как проверить то, что каждое слово в строке начинается с заглавной буквы?
Существует строковый метод istitle()
, который проверяет, начинается ли каждое слово в строке с заглавной буквы.
print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False
3. Как проверить строку на вхождение в неё другой строки?
Существует оператор in
, который вернёт True
в том случае, если строка содержит искомую подстроку.
print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False
4. Как найти индекс первого вхождения подстроки в строку?
Есть два метода, возвращающих индекс первого вхождения подстроки в строку. Это — find()
и index()
. У каждого из них есть определённые особенности.
Метод find()
возвращает -1
в том случае, если искомая подстрока в строке не найдена.
'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1
Метод index()
в подобной ситуации выбрасывает ошибку ValueError
.
'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found
5. Как подсчитать количество символов в строке?
Функция len()
возвращает длину строки.
len('The first president of the organization..') #=> 41
6. Как подсчитать то, сколько раз определённый символ встречается в строке?
Ответить на этот вопрос нам поможет метод count()
, который возвращает количество вхождений в строку заданного символа.
'The first president of the organization..'.count('o') #=> 3
7. Как сделать первый символ строки заглавной буквой?
Для того чтобы это сделать, можно воспользоваться методом capitalize()
.
'florida dolphins'.capitalize() #=> 'Florida dolphins'
8. Что такое f-строки и как ими пользоваться?
В Python 3.6 появилась новая возможность — так называемые «f-строки». Их применение чрезвычайно упрощает интерполяцию строк. Использование f-строк напоминает применение метода format()
.
При объявлении f-строк перед открывающей кавычкой пишется буква f
.
name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'
9. Как найти подстроку в заданной части строки?
Метод index()
можно вызывать, передавая ему необязательные аргументы, представляющие индекс начального и конечного фрагмента строки, в пределах которых и нужно осуществлять поиск подстроки.
'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23
Обратите внимание на то, что вышеприведённая конструкция возвращает 23
, а не 0
, как было бы, не ограничь мы поиск.
'the happiest person in the whole wide world.'.index('the')
#=> 0
10. Как вставить содержимое переменной в строку, воспользовавшись методом format()?
Метод format()
позволяет добиваться результатов, сходных с теми, которые можно получить, применяя f-строки. Правда, я полагаю, что использовать format()
не так удобно, так как все переменные приходится указывать в качестве аргументов format()
.
difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'
11. Как узнать о том, что в строке содержатся только цифры?
Существует метод isnumeric()
, который возвращает True
в том случае, если все символы, входящие в строку, являются цифрами.
'80000'.isnumeric() #=> True
Используя этот метод, учитывайте то, что знаки препинания он цифрами не считает.
'1.0'.isnumeric() #=> False
12. Как разделить строку по заданному символу?
Здесь нам поможет метод split()
, который разбивает строку по заданному символу или по нескольким символам.
'This is great'.split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']
13. Как проверить строку на то, что она составлена только из строчных букв?
Метод islower()
возвращает True
только в том случае, если строка составлена исключительно из строчных букв.
'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False
14. Как проверить то, что строка начинается со строчной буквы?
Сделать это можно, вызвав вышеописанный метод islower()
для первого символа строки.
'aPPLE'[0].islower() #=> True
15. Можно ли в Python прибавить целое число к строке?
В некоторых языках это возможно, но Python при попытке выполнения подобной операции будет выдана ошибка TypeError
.
'Ten' + 10 #=> TypeError
16. Как «перевернуть» строку?
Для того чтобы «перевернуть» строку, её можно разбить, представив в виде списка символов, «перевернуть» список, и, объединив его элементы, сформировать новую строку.
''.join(reversed("hello world"))
#=> 'dlrow olleh'
17. Как объединить список строк в одну строку, элементы которой разделены дефисами?
Метод join()
умеет объединять элементы списков в строки, разделяя отдельные строки с использованием заданного символа.
'-'.join(['a','b','c'])
#=> 'a-b-c'
18. Как узнать о том, что все символы строки входят в ASCII?
Метод isascii()
возвращает True
в том случае, если все символы, имеющиеся в строке, входят в ASCII.
print( 'Â'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True
19. Как привести всю строку к верхнему или нижнему регистру?
Для решения этих задач можно воспользоваться методами upper()
и lower()
, которые, соответственно, приводят все символы строк к верхнему и нижнему регистрам.
sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'
20. Как преобразовать первый и последний символы строки к верхнему регистру?
Тут, как и в одном из предыдущих примеров, мы будем обращаться к символам строки по индексам. Строки в Python иммутабельны, поэтому мы будем заниматься сборкой новой строки на основе существующей.
animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'
21. Как проверить строку на то, что она составлена только из прописных букв?
Имеется метод isupper()
, который похож на уже рассмотренный islower()
. Но isupper()
возвращает True
только в том случае, если вся строка состоит из прописных букв.
'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True
22. В какой ситуации вы воспользовались бы методом splitlines()?
Метод splitlines()
разделяет строки по символам разрыва строки.
sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']
23. Как получить срез строки?
Для получения среза строки используется синтаксическая конструкция следующего вида:
string[start_index:end_index:step]
Здесь step
— это шаг, с которым будут возвращаться символы строки из диапазона start_index:end_index
. Значение step
, равное 3, указывает на то, что возвращён будет каждый третий символ.
string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' (каждый 2-й символ)
24. Как преобразовать целое число в строку?
Для преобразования числа в строку можно воспользоваться конструктором str()
.
str(5) #=> '5'
25. Как узнать о том, что строка содержит только алфавитные символы?
Метод isalpha()
возвращает True
в том случае, если все символы в строке являются буквами.
'One1'.isalpha() #=> False
'One'.isalpha() #=> True
26. Как в заданной строке заменить на что-либо все вхождения некоей подстроки?
Если обойтись без экспорта модуля, позволяющего работать с регулярными выражениями, то для решения этой задачи можно воспользоваться методом replace()
.
sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'
27. Как вернуть символ строки с минимальным ASCII-кодом?
Если взглянуть на ASCII-коды элементов, то окажется, например, что прописные буквы имеют меньшие коды, чем строчные. Функция min()
возвращает символ строки, имеющий наименьший код.
min('strings') #=> 'g'
28. Как проверить строку на то, что в ней содержатся только алфавитно-цифровые символы?
В состав алфавитно-цифровых символов входят буквы и цифры. Для ответа на этот вопрос можно воспользоваться методом isalnum()
.
'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False
29. Как удалить пробелы из начала строки (из её левой части), из её конца (из правой части), или с обеих сторон строки?
Здесь нам пригодятся, соответственно, методы lstrip()
, rstrip()
и strip()
.
string = ' string of whitespace '
string.lstrip() #=> 'string of whitespace '
string.rstrip() #=> ' string of whitespace'
string.strip() #=> 'string of whitespace'
30. Как проверить то, что строка начинается с заданной последовательности символов, или заканчивается заданной последовательностью символов?
Для ответа на этот вопрос можно прибегнуть, соответственно, к методам startswith()
и endswith()
.
city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False
31. Как закодировать строку в ASCII?
Метод encode()
позволяет кодировать строки с использованием заданной кодировки. По умолчанию используется кодировка utf-8
. Если некий символ не может быть представлен с использованием заданной кодировки, будет выдана ошибка UnicodeEncodeError
.
'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Â'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)
32. Как узнать о том, что строка включает в себя только пробелы?
Есть метод isspace()
, который возвращает True
только в том случае, если строка состоит исключительно из пробелов.
''.isspace() #=> False
' '.isspace() #=> True
' '.isspace() #=> True
' the '.isspace() #=> False
33. Что случится, если умножить некую строку на 3?
Будет создана новая строка, представляющая собой исходную строку, повторённую три раза.
'dog' * 3
# 'dogdogdog'
34. Как привести к верхнему регистру первый символ каждого слова в строке?
Существует метод title()
, приводящий к верхнему регистру первую букву каждого слова в строке.
'once upon a time'.title() #=> 'Once Upon A Time'
35. Как объединить две строки?
Для объединения строк можно воспользоваться оператором +
.
'string one' + ' ' + 'string two'
#=> 'string one string two'
36. Как пользоваться методом partition()?
Метод partition()
разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')
37. Строки в Python иммутабельны. Что это значит?
То, что строки иммутабельны, говорит о том, что после того, как создан объект строки, он не может быть изменён. При «модификации» строк исходные строки не меняются. Вместо этого в памяти создаются совершенно новые объекты. Доказать это можно, воспользовавшись функцией id()
.
proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440
При конкатенации 'Rise each day before the sun'
и ' if its a weekday'
в памяти создаётся новый объект, имеющий новый идентификатор. Если бы исходный объект менялся бы, тогда у объектов был бы один и тот же идентификатор.
38. Если объявить одну и ту же строку дважды (записав её в 2 разные переменные) — сколько объектов будет создано в памяти? 1 или 2?
В качестве примера подобной работы со строками можно привести такой фрагмент кода:
animal = 'dog'
pet = 'dog'
При таком подходе в памяти создаётся лишь один объект. Когда я столкнулся с этим в первый раз, мне это не показалось интуитивно понятным. Но этот механизм помогает Python экономить память при работе с длинными строками.
Доказать это можно, прибегнув к функции id()
.
animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688
39. Как пользоваться методами maketrans() и translate()?
Метод maketrans()
позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.
Метод translate()
позволяет применить заданную таблицу для преобразования строки.
# создаём отображение
mapping = str.maketrans("abcs", "123S")
# преобразуем строку
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'
Обратите внимание на то, что в строке произведена замена символов a
, b
, c
и s
, соответственно, на символы 1
, 2
, 3
и S
.
40. Как убрать из строки гласные буквы?
Один из ответов на этот вопрос заключается в том, что символы строки перебирают, пользуясь механизмом List Comprehension. Символы проверяют, сравнивая с кортежем, содержащим гласные буквы. Если символ не входит в кортеж — он присоединяется к новой строке.
string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'
41. В каких ситуациях пользуются методом rfind()?
Метод rfind()
похож на метод find()
, но он, в отличие от find()
, просматривает строку не слева направо, а справа налево, возвращая индекс первого найденного вхождения искомой подстроки.
story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39
Итоги
Я часто объясняю одному продакт-менеджеру, человеку в возрасте, что разработчики — это не словари, хранящие описания методов объектов. Но чем больше методов помнит разработчик — тем меньше ему придётся гуглить, и тем быстрее и приятнее ему будет работаться. Надеюсь, теперь вы без труда ответите на рассмотренные здесь вопросы.
Уважаемые читатели! Что, касающееся обработки строк в Python, вы посоветовали бы изучить тем, кто готовится к собеседованию?
capitalize() | Возвращает копию строки, в которой первая буква переведена в верхний регистр (заглавная), а остальные — в нижний (строчные). Совет: если хотите сделать заглавными первые буквы всех слов в строке, используйте | a = "bee sting" print(a.capitalize()) Результат: Bee sting |
casefold() | Возвращает копию строки, в которой все буквы переведены в нижний регистр. Это может быть полезно для поиска соответствий без учета регистра. | a = "BEE" print(a.casefold()) Результат: bee |
center(width[, fillchar]) | Этот метод помещает указанную строку в центр другой строки, ширина которой (в символах) определяется параметром Все пространство, не заполненное центральной строкой, заполняется символами, заданными в параметре Если указанная ширина строки меньше, чем ширина исходной строки ( | a = "bee" b = a.center(12, "-") print(b) Результат: —-bee—— |
count(sub[, start[, end]]) | Метод возвращает число вхождений указанной подстроки Аргументы для определения начала и конца промежутка опциональны и интерпретируются как обозначение среза. При подсчете учитываются непересекающиеся вхождения. Это означает, что Python не будет заново прибавлять символы, которые уже были посчитаны. Например, если у вас есть строка хххх и вы хотите подсчитать, сколько в ней вхождений подстроки ххх, то в результате получите 1. | a = "Mushroooom soup" print(a.count("O")) print(a.count("o")) print(a.count("oo")) print(a.count("ooo")) print(a.count("Homer")) print(a.count("o", 4, 7)) print(a.count("o", 7)) Результат: 0 |
encode(encoding="utf-8", errors="strict") | Возвращает декодированную версию строки в качестве байтового объекта. Кодировка по умолчанию — utf-8. При помощи параметра
| from base64 import b64encode a = "Banana" print(a) a = b64encode(a.encode()) print(a) Результат: Banana |
endswith(suffix[, start[, end]]) | Возвращает Суффикс также может быть кортежем суффиксов. Если указывается аргумент При указании аргумента | a = "Banana" print(a.endswith("a")) print(a.endswith("nana")) print(a.endswith("z")) print(a.endswith("an", 1, 3)) Результат: True |
expandtabs(tabsize=8) | Этот метод возвращает строку, в которой все символы табуляции (\t ) заменяются одним или несколькими пробелами. При этом строка получается разделенной на столбцы. При помощи tabsize можно задать ширину столбцов в символах. | a = "1\t2\t3" print(a) print(a.expandtabs()) print(a.expandtabs(tabsize=12)) print(a.expandtabs(tabsize=2)) Результат: 1 2 3 |
find(sub[, start[, end]]) | Возвращает первый индекс в строке, на котором была найдена указанная подстрока. Можно указать диапазон поиска при помощи опциональных аргументов Если подстрока в строке не найдена, возвращается Примечание: метод | a = "Fitness" print(a.find("F")) print(a.find("f")) print(a.find("n")) print(a.find("ness")) print(a.find("ess")) print(a.find("z")) print(a.find("Homer")) Результат: 0 |
format(*args, **kwargs) | При помощи этого метода можно отформатировать строку. Строка, относительно которой вызывается этот метод, может содержать простой текст или места для подстановки, обозначенные фигурными скобками. Каждое место для подстановки содержит или числовой индекс позиционного аргумента, или имя именованного аргумента. Метод возвращает строку, в которой каждое поле подстановки заменено строковым значением соответствующего аргумента. | # Пример 1 print("{} and {}".format("Tea", "Coffee")) # Пример 2 print("{1} and {0}".format("Tea", "Coffee")) # Пример 3 print("{lunch} and {dinner}".format(lunch="Peas", dinner="Beans")) # Пример 4 print("{0}, {1}, {2}".format(*"123")) # Пример 5 lunch = {"food": "Pizza", "drink": "Wine"} print("Lunch: {food}, {drink}".format(**lunch)) Результат: Tea and Coffee |
format_map(mapping) | Работа этого метода аналогична работе format(**mapping) , за исключением того, что здесь отображение используется напрямую, без копирования в словарь. | # Пример 1 lunch = {"Food": "Pizza", "Drink": "Wine"} print("Lunch: {Food}, {Drink}".format_map(lunch)) # Пример 2 class Default(dict): def __missing__(self, key): return key lunch = {"Food": "Pizza"} print("Lunch: {Food}, {Drink}".format_map(Default(lunch))) lunch = {"Drink": "Wine"} print("Lunch: {Food}, {Drink}".format_map(Default(lunch))) Результат: Lunch: Pizza, Wine |
index(sub[, start[, end]]) | Этот метод напоминает find() , который мы уже разбирали выше. Но здесь, если заданная подстрока не найдена в строке, вы получаете ValueError (в отличие от find() , который возвращает -1 ). | a = "Fitness" print(a.index("F")) print(a.index("n")) print(a.index("ness")) print(a.index("ess")) print(a.index("z")) #Error Результат: 0 |
isalnum() | Этот метод возвращает Значение переменной
| c = "Fitness" print(c.isalnum()) c = "123" print(c.isalnum()) c = "1.23" print(c.isalnum()) c = "$*%!!!" print(c.isalnum()) c = "0.34j" print(c.isalnum()) Результат: True |
isalpha() | Возвращает Примечание. Имейте в виду, что под «буквенными» символами понимаются символы, определенные в базе данных Unicode как «буква», т. е., относящиеся к любой из категорий «Lm», «Lt», «Lu», «Ll» и «Lo». | c = "Fitness" print(c.isalpha()) c = "123" print(c.isalpha()) c = "$*%!!!" print(c.isalpha()) Результат: True |
isdecimal() | Возвращает К десятичным символам относятся символы, с помощью которых можно формировать числа в десятичной системе счисления. В Unicode эти символы относятся к общей категории «Nd». | c = "123" print(c.isdecimal()) c = u"\u00B2" print(c.isdecimal()) c = "1.23" print(c.isdecimal()) c = "u123" print(c.isdecimal()) c = "Fitness" print(c.isdecimal()) c = "$*%!!!" print(c.isdecimal()) Результат: True |
isdigit() | Возвращает Метод Разницу между методами | c = "123" print(c.isdigit()) c = u"\u00B2" print(c.isdigit()) c = "1.23" print(c.isdigit()) c = "u123" print(c.isdigit()) c = "Fitness" print(c.isdigit()) c = "$*%!!!" print(c.isdigit()) Результат: True |
isidentifier() | Возвращает Совет: для проверки зарезервированных идентификаторов, таких как | a = "123" print(a.isidentifier()) a = "_user_123" print(a.isidentifier()) a = "_user-123" print(a.isidentifier()) a = "Homer" print(a.isidentifier()) a = "for" print(a.isidentifier()) Результат: False |
islower() | Возвращает Речь идет о символах, которые в принципе могут быть как в нижнем, так и в верхнем регистре, т. е., относящихся к одной из общих категорий «Lu», «Ll» или «Lt». Чтобы перевести строку в нижний регистр, можно использовать метод | a = " " print(a.islower()) a = "123" print(a.islower()) a = "_user_123" print(a.islower()) a = "Homer" print(a.islower()) a = "HOMER" print(a.islower()) a = "homer" print(a.islower()) a = "HOMER" a = a.casefold() #Force lowercase print(a.islower()) Результат: False |
isnumeric() | Возвращает К числовым символам относятся все цифры, а также все символы, имеющие в Unicode значение свойства | c = "123" print(c.isnumeric()) c = u"\u00B2" print(c.isnumeric()) c = "1.23" print(c.isnumeric()) c = "u123" print(c.isnumeric()) c = "Fitness" print(c.isnumeric()) c = "$*%!!!" print(c.isnumeric()) Результат: True |
isprintable() | Возвращает К непечатаемым символам относятся символы, определенные в базе данных Unicode как «Other» или «Separator», за исключением пробела ASCII (0x20), который считается печатаемым. В этом контексте к печатаемым символам относятся те, которые не должны экранироваться при вызове метода | a = "" print(a.isprintable()) a = " " print(a.isprintable()) a = u"\u00B2" print(a.isprintable()) a = "Bart" print(a.isprintable()) a = "\t" print(a.isprintable()) a = "\r\n" print(a.isprintable()) a = "Bart \r" print(a.isprintable()) Результат: True |
isspace() | Возвращает К символам пробелов относятся те, который в базе данных Unicode определены как «Other» или «Separator» и имеют двунаправленное свойство «WS», «B» или «S». | a = "" print(a.isspace()) a = " " print(a.isspace()) a = "Bart" print(a.isspace()) a = "\t" print(a.isspace()) a = "\r\n" print(a.isspace()) a = "Bart \r" print(a.isspace()) Результат: False |
istitle() | Возвращает Чтобы метод вернул | a = "" print(a.istitle()) a = " " print(a.istitle()) a = " t" print(a.istitle()) a = " T" print(a.istitle()) a = "Tea" print(a.istitle()) a = "Tea and Coffee" print(a.istitle()) a = "Tea And Coffee" print(a.istitle()) a = "1. Tea & Coffee \r" print(a.istitle()) Результат: False |
isupper() | Этот метод возвращает Речь идет о символах, которые в принципе могут быть как в нижнем, так и в верхнем регистре, т. е., относящихся к одной из общих категорий «Lu», «Ll» или «Lt». | a = " " print(a.isupper()) a = "123" print(a.isupper()) a = "_USER_123" print(a.isupper()) a = "Homer" print(a.isupper()) a = "HOMER" print(a.isupper()) a = "homer" print(a.isupper()) a = "HOMER" a = a.casefold() #Force lowercase print(a.isupper()) Результат: False |
join(iterable) | Возвращает строку, которая является конкатенацией строк в итерируемом объекте. Если в итерируемом объекте будут любые нестроковые значения, включая байтовые объекты, вы получите Разделителем между элементами служит заданная строка. | a = "-" print(a.join("123")) a = "." print(a.join("USA")) a = ". " print(a.join(("Dr", "Who"))) Результат: 1-2-3 |
ljust(width[, fillchar]) | Возвращает строку, выровненную по левому краю в рамках большей строки (ее ширина в символах задается при помощи параметра Для заполнения места, не занятого оригинальной строкой, используются ASCII пробелы, но можно и указать желаемый символ — при помощи параметра Если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи Здесь все по аналогии с методом | a = "bee" b = a.ljust(12, "-") print(b) Результат: bee——— |
lower() | Возвращает копию строки, в которой все символы переведены в нижний регистр. Разумеется, речь идет о символах, которые в принципе могут быть как в верхнем, так и в нижнем регистре. В плане замены символов этот метод менее агрессивен, чем | a = "BEE" print(a.lower()) Результат: bee |
lstrip([chars]) | Возвращает копию строки с удаленными первыми символами (т.е., символами, стоящими слева). В аргументе Обратите внимание, что в качестве аргумента задается не префикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь слева направо, пока не достигнет первого символа, не входящего в набор. | a = " Bee " print(a.lstrip(), "!") a = "-----Bee-----" print(a.lstrip("-")) Результат: Bee ! |
maketrans(x[, y[, z]]) | Это статический метод, возвращающий таблицу преобразования символов, которую затем можно применить для метода Если передается только один аргумент, он должен быть словарем, в котором целые числа или символы (строки с длиной, равной 1) Unicode отражены на целые числа Unicode или строки (любой длины) или установлены на Если передается два аргумента, это должны быть строки одинаковой длины. В результате получится словарь, в котором каждый символ строки Если задается третий аргумент, это должна быть строка, символы которой в результате будут отражены в | frm = "SecrtCod" to = "12345678" trans_table = str.maketrans(frm, to) secret_code = "Secret Code".translate(trans_table) print(secret_code) Результат: 123425 6782 |
partition(sep) | Разделяет строку в месте первого вхождения заданного разделителя ( Если заданный разделитель не найден, метод опять же возвращает кортеж из трех элементов, где первым элементом будет вся неразделенная строка, за которой будут идти две пустые строки. | a = "Python-program" print(a.partition("-")) print(a.partition(".")) Результат: (‘Python’, ‘-‘, ‘program’) |
replace(old, new[, count]) | Возвращает копию строки, где все вхождения old заменены на new . Если добавлен опциональный аргумент count , будут заменены не все вхождения old , а столько, сколько указано в count . То есть, если count это 3, то будут заменены только первые 3 вхождения old . | a = "Tea bag. Tea cup. Tea leaves." print(a.replace("Tea", "Coffee")) print(a.replace("Tea", "Coffee", 2)) Результат: Coffee bag. Coffee cup. Coffee leaves. |
rfind(sub[, start[, end]]) | Возвращает самый большой индекс в строке, на котором была найдена указанная подстрока. При помощи опциональных аргументов Работа этого метода аналогична работе метода | a = "Yes Fitness" print(a.rfind("Y")) print(a.rfind("e")) print(a.rfind("s")) print(a.rfind("ss")) print(a.rfind("y")) print(a.rfind("z")) print(a.rfind("Homer")) Результат: 0 |
rindex(sub[, start[, end]]) | Этот метод похож на приведенный выше метод В общем, как | a = "Yes Fitness" print(a.rindex("Y")) print(a.rindex("e")) print(a.rindex("s")) print(a.rindex("ss")) print(a.rindex("y")) print(a.rindex("z")) print(a.rindex("Homer")) Результат: 0 |
rjust(width[, fillchar]) | Возвращает строку, выровненную по правому краю в рамках большей строки (ее ширина в символах задается при помощи параметра Для заполнения места, не занятого оригинальной строкой, используются символы, заданные при помощи параметра Если символ-заполнитель не задан, по умолчанию будут использоваться ASCII пробелы. В случае, если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи Здесь все по аналогии с методом | a = "bee" b = a.rjust(12, "-") print(b) Результат: ———bee |
rpartition(sep) | Разделяет строку в месте последнего вхождения заданного разделителя ( Если заданный разделитель не найден, метод опять же возвращает кортеж из трех элементов, где двумя первыми элементами будут пустые строки, а последним — неразделенная исходная строка. Работа этого метода как бы зеркально отражает работу метода | a = "Homer-Jay-Simpson" print(a.rpartition("-")) print(a.rpartition(".")) Результат: (‘Homer-Jay’, ‘-‘, ‘Simpson’) |
rsplit(sep=None, maxsplit=-1) | Возвращает список слов в строке, используя Если задан параметр Разделитель можно не задавать или указать Работа | a = "Homer Jay Simpson" print(a.rsplit()) a = "Homer-Jay-Simpson" print(a.rsplit(sep="-",maxsplit=1)) Результат: [‘Homer’, ‘Jay’, ‘Simpson’] |
rstrip([chars]) | Возвращает копию строки с удаленными последними символами (т.е., символами, стоящими справа). В аргументе chars задается набор символов, которые нужно удалить. Если не задавать этот аргумент или установить его в Обратите внимание, что в качестве аргумента задается не суффикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь справа налево, пока не достигнет первого символа, не входящего в набор. Работа этого метода — зеркальное отражение работы | a = " Bee " print(a.rstrip(), "!") a = "-----Bee-----" print(a.rstrip("-")) Результат: Bee ! |
split(sep=None, maxsplit=-1) | Этот метод разбивает заданную строку на отдельные слова и возвращает список этих слов. Строка-разделитель задается при помощи параметра sep. Если разделитель указан, то последовательно расположенные разделители не группируются вместе. В этом случае считается, что они разделяют пустые строки. Например, Заданный разделитель может состоять из нескольких символов. Например, Если метод Если разделитель не задан или задан Если исходная строка состоит исключительно из пробелов или пуста, а в качестве разделителя будет указан | a = "Homer Jay Simpson" print(a.split()) a = "Homer-Jay-Simpson" print(a.split(sep="-",maxsplit=1)) a = "Homer,,Bart," print(a.split(",")) a = "Homer,,Bart" print(a.split(",", maxsplit=1)) a = "Homer<>Bart<>Marge" print(a.split("<>")) Результат: [‘Homer’, ‘Jay’, ‘Simpson’] |
splitlines([keepends]) | Если у вас есть многострочная строка, где строчки разделены, например, символами переноса строки, этот метод может вернуть список строчек, из которых состоит ваша строка. Сами символы, отделяющие строчки, не будут входить в итоговый список, если не указать Этот метод делит строку по следующим экранированным последовательностям:
| a = "Tea\n\nand coffee\rcups\r\n" print(a.splitlines()) print(a.splitlines(keepends=True)) Результат: [‘Tea’, », ‘and coffee’, ‘cups’] |
startswith(prefix[, start[, end]]) | Возвращает Префикс также может быть кортежем префиксов. Если указывается аргумент Этот метод — зеркальное отражение метода | a = "Homer" print(a.startswith("H")) print(a.startswith("h")) print(a.startswith("Homer")) print(a.startswith("z")) print(a.startswith("om", 1, 3)) Результат: True |
strip([chars]) | Возвращает копию строки, в начале и конце которой удалены заданные символы. Этот набор символов, подлежащих удалению, задается в аргументе Обратите внимание, что в качестве аргумента задается не префикс или суффикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь и слева направо, и справа налево, пока с каждой стороны не достигнет первого символа, не входящего в набор. Работа этого метода — своего рода комбинация работы методов | a = " Bee " print(a.strip(), "!") a = "-----Bee-----" print(a.strip("-")) Результат: Bee ! |
swapcase() | Возвращает копию строки, в которой все символы, стоящие в верхнем регистре, переведены в нижний, и наоборот. Обратите внимание, что повторное применение метода Есть такие комбинации, когда двум разным символам в нижнем регистре соответствует один символ в верхнем, так что «переключение» регистра может дать неожиданный эффект. Примеры можно посмотреть в обсуждении на Stack Overflow. | a = "Homer Simpson" print(a.swapcase()) Результат: hOMER sIMPSON |
title() | Возвращает копию строки в формате заголовка (когда каждое слово в строке начинается с заглавной буквы, а все остальные — строчные). Совет: если хотите сделать заглавной только первую букву строки, используйте метод | a = "tea and coffee" print(a.title()) a = "TEA AND COFFEE" print(a.title()) Результат: Tea And Coffee |
translate(table) | Возвращает переведенную копию строки, в которой каждый символ преобразован по правилам, прописанным в таблице перевода. Для создания таблицы перевода можно воспользоваться вспомогательной функцией | frm = "SecrtCod" to = "12345678" trans_table = str.maketrans(frm, to) secret_code = "Secret Code".translate(trans_table) print(secret_code) Результат: 123425 6782 |
upper() | Возвращает копию строки, в которой все символы переведены в верхний регистр. Речь идет о символах, которые в принципе могут быть как в верхнем, так и в нижнем регистре. | a = "bee" print(a.upper()) Результат: BEE |
zfill(width) | Возвращает копию строки, которая приведена к указанной длине (задается при помощи параметра Если исходная строка короче указанной длины, «пустота» заполняется нулями ASCII слева. Знаки Если длина исходной строки больше или равна | a = "36" print(a.zfill(5)) a = "-36" print(a.zfill(5)) a = "+36" print(a.zfill(5)) Результат: 00036 |
Работа со строками в Python: литералы
Строки в Python — упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
S = 'spam"s' S = "spam's"
Строки в апострофах и в кавычках — одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
Экранированные последовательности — служебные символы
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
Экранированная последовательность | Назначение |
---|---|
\n | Перевод строки |
\a | Звонок |
\b | Забой |
\f | Перевод страницы |
\r | Возврат каретки |
\t | Горизонтальная табуляция |
\v | Вертикальная табуляция |
\N{id} | Идентификатор ID базы данных Юникода |
\uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
\Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
\xhh | 16-ричное значение символа |
\ooo | 8-ричное значение символа |
\0 | Символ Null (не является признаком конца строки) |
«Сырые» строки — подавляют экранирование
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
S = r'C:\newt.txt'
Но, несмотря на назначение, «сырая» строка не может заканчиваться символом обратного слэша. Пути решения:
S = r'\n\n\\'[:-1] S = r'\n\n' + '\\' S = '\\n\\n'
Строки в тройных апострофах или кавычках
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
>>> c = '''это очень большая ... строка, многострочный ... блок текста''' >>> c 'это очень большая\nстрока, многострочный\nблок текста' >>> print(c) это очень большая строка, многострочный блок текста
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>
Строка для вывода в Python
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
преобразовать строку в список в Python
Введение
При программировании нам может потребоваться преобразовать строку в список в Python. Это могло быть по любой другой причине. Но здесь возникает вопрос, как мы можем преобразовать строку в разные формы списков?
Итак, в этом руководстве мы собираемся узнать, как преобразовать строку в список в Python .
Методы преобразования строки в список в Python
Преобразование строки в список в Python — довольно простая задача.Это может быть достигнуто с помощью различных методов в соответствии с нашими собственными требованиями.
В этом руководстве мы рассмотрим все методы, с помощью которых мы можем преобразовать строку в список в Python для разных случаев. Ниже мы перечислили все методы:
- Строка в список строк
- Строка в список символов
- Список строк в список списков
- CSV в список
- Строка, состоящая из целых чисел в список целых
Теперь мы собираемся обсудить каждый из вышеупомянутых методов один за другим.
1. Строка к списку строк
Когда нам нужно преобразовать строку в список в Python, содержащий составляющие строки родительской строки (ранее разделенные некоторым разделителем, например ‘,’ или пробелом), мы используем этот метод для выполнения задачи.
Например, скажем, у нас есть строка «Python is great» , и нам нужен список, который будет содержать только заданные имена, ранее разделенные пробелами, мы можем получить требуемый список, просто разделив строку на части на основе положения пространства.
Давайте рассмотрим пример, чтобы лучше понять это.
#given string string1 = "Python великолепен" # печать строки print ("Фактическая строка:", строка1) # дает нам тип string1 print ("Тип строки:", тип (строка1)) print ("Строка добавлена в список:", string1.split ()) # печатает список, заданный split ()
Выход :
Строка в список строк
В приведенном выше коде:
- Мы рассматриваем строку
string1 = "Python is great"
и пытаемся преобразовать то же самое. Список составляющих строк -
type ()
дает нам тип объекта, переданного методу, который в нашем случае была строкой -
split ()
в основном используется для разделения строки на список на основе заданного разделителя.В нашем коде слова были разделены пробелами. По умолчанию, если мы ничего не передаем методу split () , он разбивает строку на основе положения пробелов - Следовательно, хотя мы не упомянули параметр разделителя, метод
split ()
дает нам список соответствующих строк
2. Строка в список символов
Что делать, если нам нужен список символов , присутствующий в строке? В этом случае прямое преобразование типа из строки в список в Python с использованием метода list ()
делает эту работу за нас.
Конечно, если входная строка представляет собой что-то вроде «abcd» , преобразование строки в список с использованием метода list ()
дает нам список, содержащий отдельные символы ‘a’, ‘b’, ‘c’ , ‘d’ как его элементы. Взгляните на приведенный ниже пример кода.
#given string string1 = "AskPython" # печать строки print ("Фактическая строка:", строка1) # подтверждение типа () print ("Тип строки:", тип (строка1)) # преобразование строки в список с помощью list () print ("Строка помещена в список: \ n", list (string1))
Выход :
Строка в список символов
Понимание кода:
- Сначала мы инициализируем строку
string1
как «AskPython» и печатаем ее тип с помощью методаtype ()
- И, как мы можем заметить, приведение строки к типу с использованием метода
list ()
дает нам список необходимых символов-членов
3.Список строк в список списков
Здесь мы увидим, как мы можем объединить оба вышеупомянутых метода, чтобы преобразовать строку в список списков символов .
Внимательно посмотрите на приведенный ниже пример,
# Данная строка string1 = "Это Python" print ("Фактическая строка:", строка1) # преобразование строки1 в список строк строка1 = строка1.split () # применение метода списка к отдельным элементам списка string1 список1 = список (карта (список, строка1)) # печать полученного списка списков print ("Преобразовано в список из списка символов: \ n", list1)
Выход :
Строка в список списков символов
Понять код:
- В этом случае, после инициализации строки
string1
, мы используем первый метод и преобразуем его в список строк - То есть в этот момент строка1 — это список строк, заданный как
['This' , 'is', 'Python']
- Затем мы применяем метод
list ()
ко всем элементам списка - string1 .Как мы видели в нашем предыдущем случае, это дает нам список, состоящий из списков символов. Обратите внимание, массовое приведение типов было выполнено с использованием функции map ()
4. CSV в List
Строка CSV (значения, разделенные запятыми) , как следует из названия, представляет собой строку, состоящую из значений или данных, разделенных запятыми.
Давайте посмотрим, как мы можем преобразовать такой тип строки в список в Python.
#given string строка1 = "abc, def, ghi" print ("Фактическая строка CSV:", строка1) print ("Тип строки:", тип (строка1)) # разделение строки1 на список с параметром ',' print ("CSV преобразован в список:", string1.Трещина(','))
Выход :
CSV в список
Здесь:
- Точно так же мы начинаем с рассмотрения строки string1 с различными данными или значениями, разделенными запятыми ( ‘,’ )
- После печати ее и ее типа
()
, мы продолжаем разделять ее на основе параметр ‘,’ - Это делает значения ‘abc’ , ‘def’ и ‘ghi’ элементами списка.Таким образом, мы действительно смогли извлечь значения из заданного CSV
5. Строка, состоящая из целых чисел, в список целых чисел
Теперь мы собираемся преобразовать строку, состоящую только из целых чисел, разделенных пробелом, запятой и т. Д., В список из целочисленных элементов типа .
Например, посмотрите на код ниже,
# строка с целыми числами, разделенными пробелами строка1 = "1 2 3 4 5 6 7 8" print ("Фактическая строка, содержащая целые числа:", строка1) print ("Тип строки:", тип (строка1)) # преобразование строки в список строк список1 = список (строка1.Трещина()) print ("Преобразованная строка в список:", list1) # преобразование отдельных элементов списка строк в целое число с помощью метода map () список2 = список (карта (число, список1)) print ("Список целых чисел:", list2)
Выход :
Строка с целыми числами в список
Сейчас:
- Мы взяли строку
string1
как “1 2 3 4 5 6 7 8” и напечатали ее и ее тип () последовательно - Затем мы разделим ее с помощью метода
split ()
и сохраним результирующий список в список, list1 .На данный момент list1 содержит [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’] , как мы видим из выходных данных, поскольку ожидаемый - Теперь мы сопоставляем функцию
int ()
по всему списку, преобразуя каждый из элементов в целые числа. И далее, мы сохраняем преобразованный список с типами в list2 и печатаем тот же - В результате мы получаем список, состоящий из целочисленных элементов, над которыми теперь мы можем выполнять арифметические операции.
Заключение
Вот и все, все дело в преобразовании строк в разные списки с помощью различных методов.Попробуйте использовать тот, который подходит вашему коду и решает ваши задачи, а также соответствует вашим требованиям. Вопросы в комментариях приветствуются.
Список литературы
.
Python — преобразовать строку в список
В Python, если вам когда-либо понадобится иметь дело с кодовыми базами, которые выполняют различные вызовы других API, могут возникнуть ситуации, когда вы можете получить строку в формате, подобном списку, но все же не явным образом списком. В подобных ситуациях вы можете преобразовать строку в список.
В этой статье мы рассмотрим некоторые способы достижения того же на Python.
Преобразование строк типа списка
Строка типа списка может быть строкой, которая имеет открывающую и закрывающую круглые скобки, как в списке, и содержит символы, разделенные запятыми для элементов списка.Единственная разница между этим и списком — это открывающая и закрывающая кавычки, которые означают, что это строка.
Пример:
str_inp = '["Привет", "от", "AskPython"]'
Давайте посмотрим, как мы можем преобразовать эти типы строк в список.
Метод 1: Использование модуля ast
Модуль
Python ast
(абстрактное синтаксическое дерево) представляет собой удобный инструмент, который можно использовать для работы со строками, подобными этой, соответственно обрабатывая содержимое данной строки.
Мы можем использовать ast.literal_eval ()
для вычисления литерала и преобразования его в список.
импорт аст str_inp = '["Привет", "от", "AskPython"]' печать (str_inp) op = ast.literal_eval (str_inp) печать (op)
Выход
'[«Привет», «от», «AskPython»]' ['Привет', 'от', 'AskPython']
Метод 2: Использование json-модуля
Модуль
Python json
также предоставляет нам методы, которые могут управлять строками.
В частности, метод json.loads ()
используется для декодирования строк типа JSON и возвращает список, который мы затем можем использовать соответственно.
импортировать json str_inp = '["Привет", "от", "AskPython"]' печать (str_inp) op = json.loads (str_inp) печать (op)
Вывод остается таким же, как и раньше.
Метод 3: Использование str.replace () и str.split ()
Мы можем использовать встроенный в Python метод str.replace ()
и вручную перебирать входную строку.
Мы можем удалить открывающую и закрывающую круглые скобки при добавлении элементов в наш вновь сформированный список, используя str.split (",")
, анализируя строку типа списка вручную.
str_inp = '["Привет", "от", "AskPython"]' str1 = str_inp.replace (']', ''). replace ('[', '') op = str1.replace ('"', ''). split (", ") печать (op)
Выход :
['Привет', 'от', 'AskPython']
Преобразование строк, разделенных запятыми
Строка, разделенная запятыми , — это строка, в которой содержит последовательность символов, разделенных запятыми и заключенных в кавычки строки Python.
Пример:
str_inp = "Привет, от, AskPython '
Чтобы преобразовать эти типы строк в список элементов, у нас есть другие способы выполнения задачи.
Метод 1. Использование str.split (‘,’)
Мы можем напрямую преобразовать его в список, разделив запятые с помощью str.split (',')
.
str_inp = "Привет, от, AskPython" op = str_inp.split (",") печать (op)
Выход :
['Привет', 'от', 'AskPython']
Метод 2: Использование eval ()
Если входная строка является надежной, мы можем запустить интерактивную оболочку и напрямую оценить строку с помощью eval ()
.
Однако это НЕ рекомендуется , и его лучше избегать из-за угроз безопасности при запуске потенциально ненадежного кода.
Тем не менее, если вы все еще хотите использовать это, продолжайте. Мы вас предупреждали!
str_inp = "потенциально, ненадежный, код" # Преобразовать в строку в кавычках, чтобы # мы можем использовать eval (), чтобы преобразовать его в # обычная строка str_inp = "'" + str_inp + "'" str_eval = '' # Заключите каждую запятую в одинарные кавычки # чтобы eval () мог их разделить для i в str_inp: если я == ',': я = "','" str_eval + = я op = eval ('[' + str_eval + ']') печать (op)
Результатом будет список, так как строка была оценена и была вставлена скобка, означающая, что теперь это op
является списком.
Выход
["потенциально", "ненадежный", "код"]
Это довольно длинный вариант, который не рекомендуется для анализа строк, разделенных запятыми. Использование str.split (',')
— очевидный выбор в этом случае.
Заключение
В этой статье мы узнали несколько способов преобразования списка в строку. Мы имели дело со строками типа списков и строками, разделенными запятыми, и преобразовали их в списки Python.
Список литературы
.
Список Python в строку — AskPython
В этом руководстве мы преобразуем список Python в строку. Список Python служит для представления элементов для манипулирования. По сути, он представляет собой набор однородных элементов.
Python String также служит для сбора элементов в виде символов в качестве входных данных.
Элементы списка можно преобразовать в строку одним из следующих способов:
- С помощью метода join ()
- С помощью понимания списка
- Итерация с использованием цикла for
- С помощью метода map ()
1.Список Python в строку с использованием метода join ()
Метод
Python join () может использоваться для преобразования списка в строку в Python.
Метод join ()
принимает в качестве параметра итерируемые объекты, такие как списки, кортежи, строки и т. Д. Кроме того, он возвращает новую строку, содержащую элементы, объединенные из итерируемого объекта, в качестве аргумента.
Примечание : Обязательным условием для метода join () является то, что переданная итерация должна содержать строковые элементы. Если итерируемый объект содержит целое число, он вызывает исключение TypeError .
Синтаксис:
string.join (повторяемый)
Пример:
inp_list = ['Джон', 'Бран', 'Грэмми', 'Нора'] out_str = "" print ("Преобразование списка в строку с помощью метода join (): \ n") печать (out_str.join (inp_list))
В приведенном выше примере метод join () принимает inp_list в качестве параметра и объединяет элементы списка с out_str и, таким образом, возвращает строку в качестве вывода.
Выход:
Преобразование списка в строку с помощью метода join (): Джон Бран Грэмми Нора
2. Понимание списка вместе с методом join () для преобразования списка Python в строку
Python List Computing создает список элементов из существующего списка. Кроме того, он использует цикл for для обхода элементов итерации в поэлементном шаблоне.
Понимание списка Python вместе с методом join () может использоваться для преобразования списка в строку.Понимание списка будет проходить элементы поэлементно, а метод join () объединит элементы списка в новую строку и представит ее как вывод.
Пример:
inp_list = ['Джон', 'Бран', 'Грэмми', 'Нора'] res = '' .join ([str (item) для элемента в inp_list]) print ("Преобразование списка в строку с использованием понимания списка: \ n") печать (разрешение)
Выход:
Преобразование списка в строку с использованием понимания списка: Джон Бран Грэмми Нора
3.Преобразование списка Python в строку с помощью функции map ()
Функция Python map () может использоваться для преобразования списка в строку.
Функция map ()
принимает функцию и итерируемые объекты, такие как списки, кортежи, строки и т. Д. Забегая вперед, функция map () сопоставляет элементы итерируемого с предоставленной функцией.
Синтаксис:
карта (функция, итерация)
Пример:
inp_list = ['Джон', 'Бран', 'Грэмми', 'Нора'] res = ''.присоединиться (карта (str, inp_list)) print ("Преобразование списка в строку с помощью метода map (): \ n") печать (разрешение)
В приведенном выше фрагменте кода функция map (str, inp_list) принимает в качестве аргументов функцию str и inp_list . Он сопоставляет каждый элемент входного итеративного (списка) данной функции и возвращает список элементов. Кроме того, метод join () используется для установки вывода в строковую форму.
Выход:
Преобразование списка в строку с помощью метода map (): Джон Бран Грэмми Нора
4.Итерация с использованием цикла for для преобразования списка Python в строку
В этом методе элементов входного списка повторяются один за другим и добавляются к новой пустой строке . Таким образом, преобразование списка в строку.
Пример:
inp_str = ['Джон', 'Бран', 'Грэмми'] st = "" для x в inp_str: ст + = х печать (st)
Выход:
Джон Брэн Грэмми
Преобразование списка символов в строку
Даже набор символов в виде списка можно преобразовать в строку таким же образом, как описано выше.Вот пример, демонстрирующий преобразование списка символов в строку.
Пример:
inp_str = ['J', 'o', 'u', 'r', 'n', 'a', 'l', 'd', 'e', 'v'] st = "" для x в inp_str: ст + = х печать (st)
Выход:
Journaldev
Заключение
Таким образом, в этой статье мы изучили различные техники и методы преобразования Python List в String.
Список литературы
.