Питон функции строк: Строки. Функции и методы строк
Строки. Функции и методы строк
Здравствуйте читатели блога. Сегодня я расскажу Вам о функциях и методах строк Python.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.
Ну что ж, начнем.
Базовые функции
- Конкатенация (сложение)
>>> S1 = 'spam' >>> S2 = 'eggs' >>> print(S1 + S2) 'spameggs'
>>> print('python' * 4) pythonpythonpythonpython
>>> len('python') 6
>>> S = 'spam' >>> S[0] 's' >>> S[2] 'a' >>> S[-2] 'a'
Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
Извлечение среза
Оператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй — длине строки.
>>> s = 'spameggs' >>> s[3:5] 'me' >>> s[2:-2] 'ameg' >>> s[:6] 'spameg' >>> s[1:] 'pameggs' >>> s[:] 'spameggs'
Кроме того, можно задать шаг, с которым нужно извлекать срез.
>>> s[::-1] 'sggemaps' >>> s[3:5:-1] '' >>> s[2::2] 'aeg'
Другие функции и методы строк
При вызове методов необходимо помнить, что строки в Python относятся к
категории неизменяемых последовательностей, то есть возможно лишь
создание новой строки.
>>> s = 'spam' >>> s[1] = 'b' Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> s[1] = 'b' TypeError: 'str' object does not support item assignment >>> s = s[0] + 'b' + s[2:] >>> s 'sbam'
Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Таблица «Функции и методы строк»
Функция или метод | Назначение |
---|---|
S = ‘str‘; S = «str»; S = ‘‘‘str‘‘‘; S = «»»str»»» | Литералы строк |
S = ‘s\np\ta\nbbb’ | Экранированные последовательности |
S = r’temp\new’ | Неформатированные строки (подавляют экранирование) |
S = b’bait’ | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S[i] | Обращение по индексу |
S[i:j :step] | Извлечение среза |
len(S) | Длина строки |
str in S | Проверка на вхождение подстроки в строку |
S.find(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S. rfind(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
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.endswith(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, по необходимости заполняя первые символы нулями |
Если что забыл — добавляйте через комментариях.
Кстати, советую Вам seo блог где Вы сможете прочитать про seo, бизнес в интернете, программирование информационных продуктов, создание и дизайн веб-сайтов, заработок в интернет и многое другое.
Источник: http://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html
Python. Работа с текстом. Строки.
На уроке «Python. Взлом шифров. продолжение-2» я обещал рассказать о работе с текстом. Начнем со строк. Строки в Python-е, как и в PHP и JavaScript, могут заключаться в двойные или одинарные кавычки:
s1=»Это строка»
s2=’Это тоже строка’
print (s1)
print (s2)
| s1=»Это строка» s2=’Это тоже строка’
print (s1) print (s2) |
Это позволяет создать строки с кавычками внутри (либо с апострофами внутри):
s1=»Внутри кавычек могут быть ‘апостофы’ »»»
s2=’А внутри апостофов «кавычки» «»» ‘
print (s1)
print (s2)
| s1=»Внутри кавычек могут быть ‘апостофы’ »»» s2=’А внутри апостофов «кавычки» «»» ‘
print (s1) print (s2) |
Еще есть такая фича, как тройные кавычки. Они позволят задать многострочный стринг:
s=»»»Это первая строка
а это вторая
и третья
и четвертая»»»
print (s)
| s=»»»Это первая строка а это вторая и третья и четвертая»»»
print (s) |
Другой способ задания многострочного текста — это использование символов «\n», хотя первый способ зачастую более наглядный. Вот этот код выполнит тоже самое:
s=»Это первая строка\nа это вторая\nи третья\nи четверая»
print (s)
| s=»Это первая строка\nа это вторая\nи третья\nи четверая» print (s) |
Строки можно складывать (конкатенация):
s=»Hello «+»word»
print (s)
| s=»Hello «+»word»
print (s) |
Можно умножить строку на число, в этом случае она дублируется столько раз, на сколько ее умножили:
Но при попытке умножить на дробное число выйдет ошибка:
«Traceback (most recent call last):
File «D:/Самообразование/Python работа с тектом/text6. py», line 3, in <module>
s=»Hello «*3.1
TypeError: can’t multiply sequence by non-int of type ‘float’»
Аналогично не «прокатит» и умножение строки на строку, так как данная операция не имеет смысла.
Кстати, при умножении строки на число от перестановки множителей произведение не меняется:
Такой код выдаст тоже самое, что и предыдущий. А вот со сложением данный номер не пройдет, так как там просто вторая строка с конца присоединяется к перовой.
К символам строки можно обращаться как к элементам массива, счет при этом начинается с нуля. Например, вот такой код вернет запятую:
s=»Hello, world! «
print (s[5])
| s=»Hello, world! « print (s[5]) |
Можно использовать срез. Например, вот такая программа вернет «lo,»:
s=»Hello, world! «
print (s[3:7])
| s=»Hello, world! « print (s[3:7]) |
Самый прикол, что можно получить каждый второй, каждый третьи и так далее символ из среза, например, каждый второй:
s=»Hello, world! «
print (s[1:10:2])
| s=»Hello, world! « print (s[1:10:2]) |
Такая программа вернет строку: «el,wr», а вот такая:
s=»Hello, world! «
print (s[1:10:3])
| s=»Hello, world! « print (s[1:10:3]) |
Вернет: «eow».
А еще в срезе могут быть отрицательные значения, это значит, что брать надо с конца. Например, если мы хотим получить предпоследний символ, мы можем написать [-2]. А вот если обратиться так: [:-2] то программа вернет все символы, кроме последних двух.
Теперь пара практических задач.
Задача 1. Дана строка со списком слов, разделенных пробелами. Надо найти самое длинной слово.
Решение. Вспомним урок Python. Взлом шифров. Продолжение, где для распарсиваняи строки мы использовали split. Тут поступим точно так же, распарсим строку, превратив ее в список, переберем все элементы списка, используя классический алгоритм поиска максимума:
s=»а на к в игра слово параллелепипед велосипед в не у компьютер»
ls=s.split(» «)
max_len=0
word=»»
for el in ls:
word_len=len(el)
if word_len>max_len:
max_len=word_len
word=el
print(«Слово с максимальной длиной: «+word)
| s=»а на к в игра слово параллелепипед велосипед в не у компьютер» ls=s. split(» «) max_len=0 word=»» for el in ls: word_len=len(el) if word_len>max_len: max_len=word_len word=el
print(«Слово с максимальной длиной: «+word) |
Программа вернет «Слово с максимальной длиной: параллелепипед».
Задача 2. Необходимо анализировать сигнал. Этот сигнал состоит из цифр от 0 до 9 и знака #. Две и более идущие цифры подряд обозначают эту цифру. Если цифра должна повторяться, то это обозначается двумя или более знаками # (предыдущая цифра повторяется). Одинарная цифра или знак # считается помехой и не должен учитывается. Например, сочетание «12233##577766###» обозначает «233766».
Решение. Будем анализировать строку сигнала в цикле, меняя режим цикла, если идут два и более символа подряд. Последний символ и последнюю цифру запоминаем. Символ запоминаем чтобы отследить, что иду два и более подряд, а цифру для того, чтобы знак «#» удвоил ее.
Вот такая получается программа:
source_str=»12233##577766###»
last_digit=»»
last_simbol=»»
dist_str=»»
str_len=len(source_str)
i=0
is_wait=True
while i<str_len:
simb=source_str[i]
if simb==last_simbol:
if not is_wait:
if simb==»#»:
dist_str=dist_str+last_digit
else:
dist_str=dist_str+simb
last_digit=simb
is_wait=True
else:
is_wait=False
last_simbol=simb
i=i+1
print(dist_str)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| source_str=»12233##577766###» last_digit=»» last_simbol=»» dist_str=»» str_len=len(source_str) i=0 is_wait=True while i<str_len: simb=source_str[i] if simb==last_simbol: if not is_wait: if simb==»#»: dist_str=dist_str+last_digit else: dist_str=dist_str+simb last_digit=simb is_wait=True else: is_wait=False last_simbol=simb i=i+1
print(dist_str) |
Python: рецепты форматирования строк
Часто, когда возникает необходимость в форматировании строк, я забываю некоторые нюансы. В статье ниже рассмотрены всевозможные методы применения Python str.format() и его устаревшего аналога %.
Форматирование чисел
В следующей таблице показаны различные способы форматирования чисел с использованием функции str.format() в python, с примерами как для форматирования дробных, так и для целых чисел.
Для запуска примеров используйте print(«FORMAT».format(NUMBER)) Таким образом, чтобы получить результат первого примера, вы должны запустить: print(«{:. 2f}».format(3.1415926))
Число | Формат | Результат | Примечание |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 2 знака после запятой |
3.1415926 | {:+. 2f} | +3.14 | 2 знака после запятой со знаком |
-1 | {:+.2f} | -1.00 | 2 знака после запятой со знаком |
2.71828 | {:.0f} | 3 | Без знаков после запятой |
5 | {:0>2d} | 05 | Заполнение нулями слева (2 знака) |
5 | {:x<4d} | 5xxx | Заполнение нулями справа (4 знака) |
10 | {:x<4d} | 10xx | Заполнение нулями справа (4 знака) |
1000000 | {:,} | 1,000,000 | Форматирование числа с разделителем запятой |
0.25 | {:.2%} | 25.00% | Форматирование процентов |
1000000000 | {:. 10d} | 13 | Выровненный по центру (ширина 10) |
Основы string.format()
Вот пара примеров базовой подстановки строк, вырожение {} является заполнителем для замещаемых переменных. Если формат не указан, он будет вставляться и форматироваться в виде строки.
s1 = "so much depends upon {}".format("a red wheel barrow") s2 = "glazed with {} water beside the {} chickens".format("rain", "white")
Вы также можете использовать числовое положение переменных и изменять их в строках, это дает некоторую гибкость при форматировании, если вы допустили ошибку в том порядке, который вы можете легко исправить, не перетасовывая все переменные.
s1 = " {0} is better than {1} ".format("emacs", "vim") s2 = " {1} is better than {0} ".format("emacs", "vim")
Старый метод ворматирования строк черех %
До python 2.6 способ форматирования строк, как правило, был немного проще, хотя и ограничен количеством аргументов, которые он может получить. Эти методы по-прежнему работают с Python 3.3, но есть скрытые угрозы, которые полностью не одобряют их. [РЕР-3101]
Форматирование числа с плавающей запятой:
pi = 3.14159 print(" pi = %1.2f " % pi)
Множественные замещения
s1 = "cats" s2 = "dogs" s3 = " %s and %s living together" % (s1, s2)
Недостаточное количество аргументов аргументы
Используя метод более старого формата, я бы часто получал ошибку «TypeError: not enough arguments for format string», потому что я неправильно определил свою замену, сделайте что-то вроде следующего.
set = " (%s, %s, %s, %s, %s, %s, %s, %s) " % (a,b,c,d,e,f,g,h,i)
Новый форматировщик строк python вы можете использовать пронумерованные параметры, поэтому вам не нужно подсчитывать, сколько у вас есть, по крайней мере, на половине его.
set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format(a,b,c,d,e,f,g)
Больше примеров форматирования с функцией . format()
Функция format() предлагает множество дополнительных возможностей и возможностей, вот несколько полезных советов и трюков с использованием .format()
Именованные арргументы
Вы можете использовать новый строковый формат в качестве механизма шаблонов и использовать именованные аргументы, вместо того чтобы требовать строгий порядок.
madlib = " I {verb} the {object} off the {place} ".format(verb="took", object="cheese", place="table") ~~ I took the cheese off the table
Повторное использование одной переменной несколько раз
Используя %, требуется строгий порядок переменных, метод .format() позволяет поместить их в любом порядке, как мы видели выше, и также позволяет повторно их использовать.
str = "Oh {0}, {0}! wherefore art thou {0}?".format("Romeo") ~~ Oh Romeo, Romeo! wherefore art thou Romeo?
Преобразование значений в разные форматы
Вы можете использовать следующие буквы для преобразования числа в свои форматы, decimal, hex, octal, binary
print("{0:d} - {0:x} - {0:o} - {0:b} ". format(21)) ~~ 21 - 15 - 25 - 10101
Используем format как функцию
Вы можете использовать .format как функцию, которая позволяет отделять текст и форматирование от кода. Например, в начале вашей программы вы можете включить все ваши форматы, а затем использовать позже. Это также может быть хорошим способом справиться с интернационализацией, которая требует не только разного текста, но часто требует разных форматов для чисел.
## defining formats email_f = "Your email address was {email}".format ## use elsewhere print(email_f(email="[email protected]"))
Экранирование фигурных скобок
Если вы хотите использовать фигурные скобки при использовании str.fromat(), просто продублируйте их.
print(" The {} set is often represented as {{0}}".format("empty")) ~~ The empty set is often represented as {0}
Источник
F-строки Python 3: улучшенный синтаксис форматирования строк
Начиная с Python 3. 6, f-строки — отличный новый способ форматирования строк. Это способ не только более читабелен, более краток и менее подвержен ошибкам, чем другие способы форматирования, но и быстрее всех других!
К концу этой статьи вы узнаете, как и почему нужно использовать f-строки.
Но сначала, рассмотрим старые варианты вывода строк.
“Старая-школа” форматирования строк в Python
До Python 3.6 у нас было два основных способа встраивания выражений Python в строковые литералы для форматирования: % — форматирование и str.format(). Рассмотрим, как их использовать и каковы их ограничения.
Вариант #1: % — форматирование
Этот способ форматирования Python существует в языке с самого его начала. Вы можете прочитать о нем больше информации в документации по Python. Имейте в виду, что % — форматирование не рекомендуется к использованию:
Операции форматирования, описанные здесь, демонстрируют различные проблемы, которые приводят к ряду распространенных ошибок (таких как неправильное отображение кортежей и словарей).
Использование более новых форматированных строковых литералов или интерфейса str.format() помогает избежать этих ошибок. Эти альтернативы также предоставляют более мощные, гибкие и расширяемые подходы к форматированию текста. (Источник)
Как используется % — форматирование
Строковые объекты имеют встроенную операцию с использованием оператора %, который можно использовать для форматирования строк. Вот как это выглядит на практике:
>>> name = "Eric" >>> "Hello, %s." % name 'Hello, Eric.'
Чтобы вставить более одной переменной, вы должны использовать кортеж из этих переменных.
>>> name = "Eric" >>> age = 74 >>> "Hello, %s. You are %s." % (name, age) 'Hello Eric. You are 74.'
Недостатки % — форматирования
Примеры кода, которые вы только что видели выше, достаточно читабельны. Однако, как только вы начнете использовать несколько параметров и более длинные строки, ваш код быстро станет менее читаемым. Все начинает выглядеть немного грязно:
>>> first_name = "Eric" >>> last_name = "Idle" >>> age = 74 >>> profession = "comedian" >>> affiliation = "Monty Python" >>> "Hello, %s %s. You are %s. You are a %s. You were a member of %s." % (first_name, last_name, age, profession, affiliation) 'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.'
К сожалению, этот вид форматирования не очень хорош, потому что он многословен и приводит к ошибкам, таким как неправильное отображение кортежей или словарей. К счастью, есть альтернативы.
Вариант #2: str.format()
Этот новый способ вывода строк был представлен в Python 2.6. Вы можете обратиться к документации Python для получения дополнительной информации.
Как используется str.format()
str.format() — это улучшение % — форматирования. Он использует обычный синтаксис вызова функции и расширяется с помощью метода __format__() для объекта, преобразуемого в строку.
С помощью str.format() поля вывода переменных отмечены фигурными скобками:
>>> "Hello, {}. You are {}.".format(name, age) 'Hello, Eric. You are 74.'
Вы можете ссылаться на переменные в любом порядке, ссылаясь по их индексам:
>>> "Hello, {1}. You are {0}.".format(age, name) 'Hello, Eric. You are 74.'
Но если вы вставите имена переменных, вы получите дополнительную возможность передавать объекты, а затем ссылаться на параметры и методы между фигурными скобками:
>>> person = {'name': 'Eric', 'age': 74} >>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age']) 'Hello, Eric. You are 74.'
Вы также можете использовать символ **, чтобы использовать этот трек со словарями:
>>> person = {'name': 'Eric', 'age': 74} >>> "Hello, {name}. You are {age}.".format(**person) 'Hello, Eric. You are 74.'
str.format() определенно является улучшением по сравнению с % — форматированием, но и у него есть свои недостатки.
В чем недостатки str.format()
Код, использующий str.format(), гораздо легче читается, чем код, использующий % -форматирование, но str.format() все еще может быть достаточно многословным, когда вы имеете дело с несколькими параметрами и более длинными строками. Посмотрите на это:
>>> first_name = "Eric" >>> last_name = "Idle" >>> age = 74 >>> profession = "comedian" >>> affiliation = "Monty Python" >>> print(("Hello, {first_name} {last_name}. You are {age}. " + >>> "You are a {profession}. You were a member of {affiliation}.") \ >>> .format(first_name=first_name, last_name=last_name, age=age, \ >>> profession=profession, affiliation=affiliation)) 'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.'
Если у вас есть переменные, которые вы хотите передать в .format() в словаре, то вы можете просто распаковать его с помощью .format (** some_dict) и ссылаться на значения по ключу в строке.
f-Строки: новый и улучшенный способ форматирования строк в Python
f-строки были представлены в Python 3.6. Вы можете прочитать об этом в PEP 498, который был написан Эриком В. Смитом в августе 2015 года.
Также называемые «formatted string literals»(«отформатированные строковые литералы»), f-строки — это строковые литералы, которые имеют f в начале и фигурные скобки, содержащие выражения, которые будут заменены их значениями. Выражения оцениваются во время выполнения, а затем форматируются с использованием протокола format. Как всегда, документация Python — ваш друг, когда вы хотите получить больше информации.
Вот несколько способов, которыми f-строки могут сделать вашу жизнь проще.
Простой синтаксис
Синтаксис похож на тот, который вы использовали с str.format(), но менее подробный. Посмотрите, насколько легко это читается:
>>> name = "Eric" >>> age = 74 >>> f"Hello, {name}. You are {age}." 'Hello, Eric. You are 74.'
Также было бы правильно использовать заглавную букву F:
>>> F"Hello, {name}. You are {age}." 'Hello, Eric. You are 74.'
Ты еще не любишь f — строки? Я надеюсь, что к концу этой статьи вы ответите >>> F"Yes!"
Произвольные выражения
Поскольку f-строки оцениваются во время выполнения, вы можете поместить в них все допустимые выражения Python. Это позволяет вам делать некоторые изящные вещи.
Вы можете сделать что-то довольно простое, как это:
>>> f"{2 * 37}" '74'
Но вы также можете вызывать функции. Вот пример:
>>> def to_lowercase(input): ... return input. lower() >>> name = "Eric Idle" >>> f"{to_lowercase(name)} is funny." 'eric idle is funny.'
Вы также можете напрямую вызвать метод:
>>> f"{name.lower()} is funny." 'eric idle is funny.'
Вы даже можете использовать объекты, созданные из классов с f-строками. Представьте, что у вас есть следующий класс:
class Comedian: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def __str__(self): return f"{self.first_name} {self. last_name} is {self.age}." def __repr__(self): return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"
Вы сможете сделать это:
>>> new_comedian = Comedian("Eric", "Idle", "74") >>> f"{new_comedian}" 'Eric Idle is 74.'
Методы __str__() и __repr__() имеют дело с тем, как объекты представляются в виде строк, поэтому вам необходимо убедиться, что вы включили хотя бы один из этих методов в определение класса. Если вам нужно выбрать один, используйте __repr__(), поскольку его можно использовать вместо __str__().
Строка, возвращаемая __str__(), является неформальным строковым представлением объекта и должна быть читабельной. Строка, возвращаемая __repr__(), является официальным представлением и должна быть однозначной. Вызов str() и repr() предпочтительнее прямого использования __str__ () и __repr__().
По умолчанию f-строки будут использовать __str__(), но вы можете убедиться, что они используют __repr__(), если вы включите флаг преобразования !r:
>>> f"{new_comedian}" 'Eric Idle is 74.' >>> f"{new_comedian!r}" 'Eric Idle is 74. Surprise!'
Если вы хотите прочитать больше, о f-строк которые поддерживают полные выражения Python, вы можете сделать это здесь.
Многострочные f-строки
Вы можете использовать многострочные строки:
>>> name = "Eric" >>> profession = "comedian" >>> affiliation = "Monty Python" >>> message = ( . .. f"Hi {name}. " ... f"You are a {profession}. " ... f"You were in {affiliation}." ... ) >>> message 'Hi Eric. You are a comedian. You were in Monty Python.'
Но помните, что вам нужно поместить «f» перед каждой строкой многострочной строки. Следующий код не будет работать:
>>> message = ( ... f"Hi {name}. " ... "You are a {profession}. " ... "You were in {affiliation}." ... ) >>> message 'Hi Eric. You are a {profession}. You were in {affiliation}.'
Если вы хотите распределить строки по нескольким строкам, вы можете так же сделать это с помощью \:
>>> message = f"Hi {name}. " \ ... f"You are a {profession}. " \ ... f"You were in {affiliation}." ... >>> message 'Hi Eric. You are a comedian. You were in Monty Python.'
Или с помощью «»»:
>>> message = f""" ... Hi {name}. ... You are a {profession}. ... You were in {affiliation}. ... """ ... >>> message '\n Hi Eric.\n You are a comedian.\n You were in Monty Python.\n'
Скорость
Символ f в f — строках также может означать «быстро» (fast).
f-строки быстрее, чем % — форматирование и str.format(). Как вы уже видели, f-строки — это выражения, вычисляемые во время выполнения, а не постоянные значения. Вот выдержка из документов:
«f-строки обеспечивают способ встраивания выражений в строковые литералы, используя минимальный синтаксис. Следует отметить, что f-строка на самом деле является выражением, вычисляемым во время выполнения, а не постоянным значением. В исходном коде Python f-строка является литеральной строкой с префиксом f, которая содержит выражения внутри фигурных скобок. Выражения заменяются их значениями ». (Источник)
Во время выполнения выражение внутри фигурных скобок оценивается в собственной области видимости и затем помещается вместе со строковым литералом в часть f-строки. Полученная строка затем возвращается. Это все, что нужно.
Вот сравнение скорости:
>>> import timeit >>> timeit.timeit("""name = "Eric" . .. age = 74 ... '%s is %s.' % (name, age)""", number = 10000) 0.003324444866599663
>>> timeit.timeit("""name = "Eric" ... age = 74 ... '{} is {}.'.format(name, age)""", number = 10000) 0.004242089427570761
>>> timeit.timeit("""name = "Eric" ... age = 74 ... f'{name} is {age}.'""", number = 10000) 0.0024820892040722242
Как вы можете видеть, f-строки выходят на первое место.
Тем не менее, это не всегда так. Когда они были впервые реализованы, у них были некоторые проблемы со скоростью, и их нужно было делать быстрее, чем str. format(). Был введен специальный код BUILD_STRING.
Python f-строки: особенности использования
Теперь, когда вы узнали все о том, почему f-строки великолепны, я уверен, что вы захотите начать их использовать. Вот несколько деталей, о которых нужно помнить, когда вы отправляетесь в этот дивный новый мир.
Кавычки
Вы можете использовать различные типы кавычек внутри выражений. Просто убедитесь, что вы не используете кавычки того же типа на внешней стороне f-строки, которые вы используете в выражении.
Этот код будет работать:
>>> f"{'Eric Idle'}" 'Eric Idle'
Этот код также будет работать:
>>> f'{"Eric Idle"}' 'Eric Idle'
Вы также можете использовать тройные кавычки:
>>> f"""Eric Idle""" 'Eric Idle'
>>> f'''Eric Idle''' 'Eric Idle'
Если вам нужно использовать одинаковый тип кавычки как внутри, так и снаружи строки, вы можете сделать это с помощью \:
>>> f"The \"comedian\" is {name}, aged {age}. " 'The "comedian" is Eric Idle, aged 74.'
Словари
Говоря о кавычках, следите, когда вы работаете со словарями. Если вы собираетесь использовать одинарные кавычки для ключей словаря, то не забудьте убедиться, что вы используете двойные кавычки для f-строк, содержащих ключи.
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f"The comedian is {comedian['name']}, aged {comedian['age']}." The comedian is Eric Idle, aged 74.
Пример с синтаксической ошибкой:
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f'The comedian is {comedian['name']}, aged {comedian['age']}. SyntaxError: invalid syntax
Если вы используете тот же тип кавычки вокруг ключей словаря, что и на внешней стороне f-строки, то кавычка в начале первого ключа словаря будет интерпретироваться как конец строки.
Фигурные скобки
Чтобы в скобках появилась скобка, вы должны использовать двойные скобки:
>>> f"{{74}}" '{74}'
Обратите внимание, что использование тройных скобок приведет к тому, что в вашей строке будут только одиночные скобки:
>>> f"{{{74}}}" '{74}'
Тем не менее, вы можете получить больше фигурных скобок, если вы используете больше, чем тройные фигурные скобки:
>>> f"{{{{74}}}}" '{{74}}'
Обратный слеш
Как вы видели ранее, вы можете использовать обратные слэши в строковой части f-строки.
SyntaxError: f-string expression part cannot include ‘#’
Заключение
Вы по-прежнему можете использовать более старые способы форматирования строк, но с f-строками у вас теперь есть более лаконичный, читаемый и удобный способ, который быстрее и менее подвержен ошибкам. Упрощение вашей жизни с помощью f-строк — отличная причина начать использовать Python 3.6, если вы еще не сделали этого. (Если вы все еще используете Python 2, не забудьте, что 2020 скоро наступит!)
Согласно Zen of Python, когда вам нужно решить, как что-то сделать, должен быть один — и предпочтительно только один — очевидный способ сделать это. Хотя f-строки не единственный возможный способ отформатировать строки, они в состоянии стать тем очевидным и единственным способом сделать эту работу.
Дальнейшее чтение
Если вы хотите прочитать расширенное обсуждение интерполяции строк, взгляните на PEP 502. Кроме того, в черновике PEP 536 есть еще несколько мыслей о будущем f-строк.
Оригинальная статья by Joanna Jablonski Python 3’s f-Strings: An Improved String Formatting Syntax (Guide)
Была ли вам полезна эта статья?
[9 / 4.6]
Python — правила оформления кода
Vkontakte
Telegram
- Отступы
- Точки с запятой
- Скобки
- Пробелы в выражениях и инструкциях
- Пробелы и скобки
- Пробелы внутри каких-либо скобок
- Пробелы перед открывающей скобкой
- Пробелы рядом с запятой, точкой с запятой и точкой
- Пробелы перед запятой, точкой с запятой, либо точкой.
- Пробелы вокруг бинарных операторов
- Пробелы вокруг бинарных операторов
- Пробелы у оператора присваивания (=)
- Пробелы при указании на именованный аргумент
- Пробелы и скобки
- Длина строк
- Пустые строки
- Имена
- Имена функций
- Имена модулей и пакетов
- Имена классов
- Имена констант
- Комментарии
- Блоки комментариев
- Комментарии в строке с кодом
- Строки документации
- Циклы
- Циклы по спискам
- Циклы по списку чисел
- Циклы по спискам с индексами
- Циклы по двум спискам
- Импорты
1. Отступы
Рекомендуется использовать 4 пробела на каждый уровень отступа. Python 3 запрещает смешивание табуляции и пробелов в отступах. Код, в котором используются и те, и другие типы отступов, должен быть исправлен так, чтобы отступы в нем были расставлены только с помощью пробелов.
Хорошо
def no_tab_using():
no_tab = 'Using 4 spaces'
Плохо
def use_tab():
one_tab_using = 'Ugly'
2. Точки с запятой
Не разделяйте ваши строки с помощью точек с запятой и не используйте точки с запятой для разделения команд, находящихся на одной строке.
Хорошо
a = 'String'
b = 15
c = 7.2
Плохо
a = 'String';
b = 15; c = 7. 2;
3. Скобки
Используйте скобки экономно. Не используйте их с выражением return
или с условной конструкцией, если не требуется организовать перенос строки. Однако скобки хорошо использовать для создания кортежей.
Хорошо
if budget
Плохо
if (budget
4. Пробелы в выражениях и инструкциях
4.1 Пробелы и скобки
4.1.1 Не ставьте пробелы внутри каких-либо скобок (обычных, фигурных и квадратных).
Хорошо
pineapple(pine[1], {apple: 2})
Плохо
pineapple( pine[ 1 ], { apple: 2 } )
4. 1.2 Никаких пробелов перед открывающей скобкой, которая начинает список аргументов, индекс или срез.
Хорошо
get_number_of_guests(1)
Плохо
get_number_of_guests (1)
Хорошо
dish['ingredients'] = cook_book[:3]
Плохо
dish ['ingredients'] = cook_book [:3]
4.2 Пробелы рядом с запятой, точкой с запятой и точкой
4.2.1 Перед запятой, точкой с запятой либо точкой не должно быть никаких пробелов. Используйте пробел после запятой, точки с запятой или точки (кроме того случая, когда они находятся в конце строки).
Хорошо
if number_of_goods == 4:
print(number_of_goods, total_price)
Плохо
if number_of_goods == 4 :
print(number_of_goods , total_price)
4. 3 Пробелы вокруг бинарных операторов
4.3.1 Окружайте бинарные операторы одиночными пробелами с каждой стороны. Это касается присваивания (=
), операторов сравнения (==
, ,
>
, !=
, ,
,
>=
, in
, not in
, is
, is not
), и булевых операторов (and
, or
, not
). Используйте, как вам покажется правильным, окружение пробелами по отношению к арифметическим операторам, но расстановка пробелов по обеим сторонам бинарного оператора придает целостность коду.
Хорошо
counter == 1
Плохо
counter<1
4.3.2 Не используйте более одного пробела вокруг оператора присваивания (или любого другого оператора) для того, чтобы выровнять его с другим.
Хорошо
price = 1000
price_with_taxes = 1200
price_with_taxes_and_discounts = 1100
Плохо
price = 1000
price_with_taxes = 1200
price_with_taxes_and_discounts = 1100
4.3.3 Не используйте пробелы по сторонам знака =
, когда вы используете его, чтобы указать на именованный аргумент или значение по умолчанию.
Хорошо
def complex(real, imag=0.0): return magic(r=real, i=imag)
Плохо
def complex(real, imag = 0. 0): return magic(r = real, i = imag)
5. Длина строк
Ограничивайте длину строк 79 символами (а длину строк документации и комментариев — 72 символами). В общем случае не используйте обратный слеш в качестве перехода на новую строку. Используйте доступное в Python явное объединение строк посредством круглых и фигурных скобок. Если необходимо, можно добавить дополнительную пару скобок вокруг выражения.
Хорошо
style_object(self, width, height, color='black', design=None,
emphasis=None, highlight=0)
if (width == 0 and height == 0 and
color == 'red' and emphasis == 'strong'):
Если ваш текст не помещается в одну строку, используйте скобки для явного объединения строк.
Хорошо
long_string = ('This will build a very long long '
'long long long long long long string')
Что касается длинных URL в комментариях, то располагайте их, если это необходимо, на одной строке.
Хорошо
# See details at
# http://www.example.com/example/example/example/example/example/example/example_example.html
Плохо
# See details at
# http://www.example.com/example/example/example/example/example/\
# example/example_example.html
Обратный слеш иногда используется. Например, с длинной конструкцией with
для переноса блока инструкций.
Хорошо
with open('/path/to/some/file/you/want/to/read') as file_1, \
open('/path/to/some/file/being/written', 'w') as file_2:
file_2.write(file_1.read())
Ещё один подобный случай — длинные assert
.
6. Пустые строки
Отделяйте функции (верхнего уровня, не функции внутри функций) и определения классов двумя пустыми строками. Определения методов внутри класса отделяйте одной пустой строкой. Две пустые строки должны быть между объявлениями верхнего уровня, будь это класс или функция. Одна пустая строка должна быть между определениями методов и между объявлением класса и его первым методом.
import os
.
.
class MyClass:
.
def __init__(self):
self.name = 'My name'
.
def f(self):
return 'hello world'
.
.
def MyFunc():
i = 12345
return i
.
myclass = MyClass()
Используйте (без энтузиазма) пустые строки в коде функций, чтобы отделить друг от друга логические части.
Python расценивает символ control+L
как незначащий (whitespace), и вы можете использовать его, потому что многие редакторы обрабатывают его как разрыв страницы — таким образом, логические части в файле будут на разных страницах. Однако не все редакторы распознают control+L
и могут на его месте отображать другой символ.
7. Имена
Имена, которых следует избегать:
- Односимвольные имена, исключая счетчики либо итераторы. Никогда не используйте символы
l
(маленькая латинская буква «эль»),O
(заглавная латинская буква «о») илиI
(заглавная латинская буква «ай») как однобуквенные идентификаторы. В некоторых шрифтах эти символы неотличимы от цифры один и нуля. Если очень нужноl
, пишите вместо неё заглавнуюL
.
Хорошо
long_name = 'Хорошее имя переменной'
L = 'Допустимо, но лучше избегать'
Плохо
l = 1
I = 1
O = 0
Хорошо
import my_module
Плохо
import my-module
Хорошо
my_variable = 'Variable'
Плохо
__myvariable__ = 'Variable'
7.1 Имена функций
Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания — это необходимо, чтобы увеличить читабельность.
Хорошо
my_variable = 'Variable'
Плохо
My-Variable = 'Variable'
Стиль mixedCase допускается в тех местах, где уже преобладает такой стиль — для сохранения обратной совместимости.
7.2 Имена модулей и пакетов
Модули должны иметь короткие имена, состоящие из маленьких букв. Можно использовать символы подчёркивания, если это улучшает читабельность. То же самое относится и к именам пакетов, однако в именах пакетов не рекомендуется использовать символ подчёркивания.
Так как имена модулей отображаются в имена файлов, а некоторые файловые системы являются нечувствительными к регистру символов и обрезают длинные имена, очень важно использовать достаточно короткие имена модулей — это не проблема в Unix, но, возможно, код окажется непереносимым в старые версии Windows, Mac, или DOS.
Хорошо
import vkapi
Плохо
import My-First-VKontakte-API-Modul
7.3 Имена классов
Все имена классов должны следовать соглашению CapWords почти без исключений.
class MyFirstClass:
Иногда вместо этого могут использоваться соглашения для именования функций, если интерфейс документирован и используется в основном как функции.
Обратите внимание, что существуют отдельных соглашения о встроенных именах: большинство встроенных имен — одно слово (либо два слитно написанных слова), а соглашение CapWords используется только для именования исключений и встроенных констант.
Так как исключения являются классами, к исключениями применяется стиль именования классов. Однако вы можете добавить Error в конце имени (если, конечно, исключение действительно является ошибкой).
7.4 Имена констант
Константы обычно объявляются на уровне модуля и записываются только заглавными буквами, а слова разделяются символами подчеркивания.
MAX_OVERFLOW = 10
TOTAL = 100
9. Циклы
9.1 Циклы по спискам
Если нам необходимо в цикле пройти по всем элементам списка, то хорошим тоном (да и более читаемым) будет такой способ:
Хорошо
colors = ['red', 'green', 'blue', 'yellow']
for color in colors:
print(color)
И хотя бывалые программисты или просто любители C могут использовать и такой код, это моветон.
Плохо
colors = ['red', 'green', 'blue', 'yellow']
for i in range(len(colors)):
print(colors[i])
А если нужно пройти по списку задом наперед, то лучше всего использовать метод reversed:
Хорошо
colors = ['red', 'green', 'blue', 'yellow']
for color in reversed(colors):
print(color)
Вместо того чтобы писать избыточный код, который и читается-то не очень внятно.
Плохо
colors = ['red', 'green', 'blue', 'yellow']
for i in range(len(colors)-1, -1, -1):
print(colors[i])
9.2 Циклы по списку чисел
Если есть необходимость пройти в цикле по ряду чисел, то метод range будет намного приемлемее, как минимум потому, что этот метод потребляет намного меньше памяти, чем вариант в блоке «Плохо». А представьте, что у вас ряд из трёх миллиардов последовательных чисел!
Хорошо
for i in range(6):
print(i**2)
Плохо
for i in [0, 1, 2, 3, 4, 5]:
print(i**2)
9.3 Циклы по спискам с индексами
Метод enumerate позволяет получить сразу индекс и значение из списка, что, во-первых, предоставляет множество возможностей для дальшнейшего проектирования, а во-вторых, такой код легче читается и воспринимается.
Хорошо
colors = ['red', 'green', 'blue', 'yellow']
for i, color in enumerate(colors):
print(i, '-->', color)
Плохо
colors = ['red', 'green', 'blue', 'yellow']
for i in range(len(colors)):
print(i, '-->', colors[i])
9.4 Циклы по двум спискам
Используя метод zip, мы получаем из двух списков один список кортежей, что более удобно для дальнейшего использования и требует меньше памяти. Да и просто этот вариант более элегантный.
Хорошо
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue', 'yellow']
for name, color in zip(names, colors):
print(name, '-->', color)
Плохо
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue', 'yellow']
n = min(len(names), len(colors))
for i in range(n):
print(names[i], '-->', colors[i])
10. Импорты
Каждый импорт, как правило, должен быть на отдельной строке.
Хорошо
import os
import sys
Плохо
import sys, os
В то же время, можно писать так:
Хорошо
from subprocess import Popen, PIPE
Импорты всегда располагаются в начале файла, сразу после комментариев уровня модуля, строк документации, перед объявлением констант и объектов уровня модуля. Импорты должны быть сгруппированы в порядке от самых простых до самых сложных:
- импорты из стандартной библиотеки,
- сторонние импорты,
- импорты из библиотек вашего приложения.
Наряду с группированием, импорты должны быть отсортированы лексикографически, нерегистрозависимо, согласно полному пути до каждого модуля.
Хорошо
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
Рекомендуется абсолютное импортирование, так как оно обычно более читаемо и ведет себя лучше (или, по крайней мере, даёт понятные сообщения об ошибках), если импортируемая система настроена неправильно (например, когда каталог внутри пакета заканчивается на sys.path
).
Хорошо
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
Тем не менее, явный относительный импорт является приемлемой альтернативой абсолютному импорту, особенно при работе со сложными пакетами, где использование абсолютного импорта было бы излишне подробным.
Хорошо
from . import sibling
from .sibling import example
Мой блог: Строки в Python
Строка — последовательность символов Unicode
Символ — строка, имеющая длину 1
«Строка символов»
‘Еще одна строка символов !!!’
» # Пустая строка
Доступ к элементам строки
>>> «Строка символов»
‘Строка символов’
>>> «Строка символов»[5]
‘а’
>>> «Строка символов»[8]
‘и’
>>> «Строка символов»[0]
‘С’
>>>
Индексы в Python начинаются с нуля
Символы можно только извлекать, но не изменять их.
Строку, содержащую только символы целых чисел, можно преобразовать в целое число.
>>> int(«73475690»)
73475690
>>>
причем начальные и конечные пробелы допускаются
>>> int(» 73475690 «)
73475690
>>>
Проверим, что тип действительно int
>>> print (int(» 73475690 «), type(int(» 73475690 «)))
73475690 < class ‘int ‘>
>>>
Преобразовать число в строку можно так:
>>> str(26540978)
‘26540978’
>>>
Проверим, что тип действительно str
>>> print (str(26540978), type(str(26540978)))
26540978 < class ‘str’ >
>>>
Можно создать объект типа str в памяти и затем создать ссылку на на этот объект.
Например создадим объект типа str с текстом «python» и затем создадим на этот объект ссылку с именем a.
>>> a = «python»
>>> a
‘python’
>>>
оператор «=» связывает ссылку на объект с объектом находящимся в памяти
Если ссылка на объект уже существует, ее легко можно связать с другим объектом:
>>> a = «jython»
>>> a
‘jython’
>>>
Теперь ссылка с именем a ссылается на объект типа str с текстом «jython»
А на строку «python» теперь ни одна ссылка не ссылается
и интерпретатор сможет утилизировать объект содержащий эту строку «сборщиком мусора».
Еще пример:
>>> a = «python»
>>> b = «jython»
>>> c = a
>>> print (a, b, c)
python jython python
>>> c = b
>>> print (a, b, c)
python jython jython
>>> a = c
>>> print (a, b, c)
jython jython jython
>>>
Теперь ни одна ссылка не ссылается на строку «python»,
интерпретатор сможет утилизировать объект содержащий эту строку.
Как мы уже видели, в интерактивной оболочке достаточно просто ввести имя ссылки на объект,
чтобы интерпретатор вывел значение связанного с ней объекта.
>>> a, b, c
(‘jython’, ‘jython’, ‘jython’)
>>>
Python вывел значения в круглых скобках, разделив их запятыми
Так обозначается тип данных tuple (кортеж), т.е. упорядоченная,
неизменяемая последовательность объектов.
Однако, чтобы вывести значение объекта по связанной с ним ссылке из программы или модуля
следует использовать функцию print()
В Python используется динамический контроль типов, т.е. ссылки на объекты в любой момент могут
повторно привязываться к различным объектам
(которые могут относиться к данным различных типов)
Имена ссылок — это идентификаторы
Они
— не могут совпадать с ключевыми словами.
— должны начинаться с алфавитного символа или символа подчеркивания,
за которым следует ноль или более алфавитных символов, символов подчеркивания или цифр.
Ограничений на длину не накладывается.
Идентификаторы чувствительны к регистру.
Строки в Python — это неизменяемый тип данных str, который хранит последоватедьность символов Unicode.
Строковые объекты создаются :
— при вызове функций str() или bytes()
— при манипуляции объектом типа файл созданным вызовом функции open()
— при определении строкового литерала (в одинарных, двойных или тройных кавычках)
Для создания строковых объектов можно использовать функцию str(),
которая без аргументов возвращает пустую строку:
>>> str()
»
>>>
С аргументом, который является строкой — возвращается его копия :
>>> str(«Oracle Java!»)
‘Oracle Java!’
>>>
С аргументом, который не является строкой — возвращается строковое представление аргумента :
>>> str(3.1415)
‘3.1415’
>>>
Функция str() может также использоваться как функция преобразования.
В этом случае первый аргумент должен быть объектом, который можно преобразовать в строку (например типа bytes или bytearray) и кроме того функции может быть передано до двух необязятельных строковых аргументов:
— один из них определяет используемую кодировку
— второй определяет порядок обработки ошибок кодирования
>>> s=»Häuser Höfe Bücher»
>>> bytes(s, encoding=’latin-1′)
b’H\xe4user H\xf6fe B\xfccher’
>>> ‘H\xe4user H\xf6fe B\xfccher’
‘Häuser Höfe Bücher’
>>> str(b’H\xe4user H\xf6fe B\xfccher’)
«b’H\\xe4user H\\xf6fe B\\xfccher'»
>>> str(b’H\xe4user H\xf6fe B\xfccher’, «latin-1»)
‘Häuser Höfe Bücher’
>>> str(b’H\xe4user H\xf6fe B\xfccher’, «ascii»)
Traceback (most recent call last):
File «», line 1, in
str(b’H\xe4user H\xf6fe B\xfccher’, «ascii»)
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 1: ordinal not in range(128)
>>> str(b’H\xe4user H\xf6fe B\xfccher’, «ascii», «ignore»)
‘Huser Hfe Bcher’
>>> str(b’H\xe4user H\xf6fe B\xfccher’, «ascii», «replace»)
‘H�user H�fe B�cher’
>>>
Литералы строк создаются с использованием кавычек или апострофов, при использовании важно, чтобы с обоих концов литерала использовались кавычки одного и того же типа.
Можно использовать строки в тройных кавычках либо в тройных апострофах.
Когда используется такая форма, все строки в программном коде объединяются в одну строку, а там, где в исходном тексте выполняется переход на новую строку, вставляется символ «конец строки». Это весьма полезно для оформления в сценариях Python крупных блоков текста:
>>> msg = «»» строка текста
еще строка текста в «кавычках» и ‘апострофах’
продолжение на следующей строке «»»
>>>
>>> msg
‘ строка текста\nеще строка текста в «кавычках» и \’апострофах\’\nпродолжение на следующей строке ‘
>>>
>>> a = «Здесь ‘апострофы’ можно не экранировать, а «кавычки» нужно экранировать.»
SyntaxError: invalid syntax
>>> a = «Здесь ‘апострофы’ можно не экранировать, а \»кавычки\» нужно экранировать.»
>>> a
‘Здесь \’апострофы\’ можно не экранировать, а «кавычки» нужно экранировать.’
>>>
>>> a = ‘Здесь ‘апострофы’ придется экранировать, а «кавычки» можно не экранировать.’
SyntaxError: invalid syntax
>>> a = ‘Здесь \’апострофы\’ придется экранировать, а «кавычки» можно не экранировать.’
>>> a
‘Здесь \’апострофы\’ придется экранировать, а «кавычки» можно не экранировать.’
>>>
В языке Python символ перевода строки интерпретируется как завершающий символ инструкции, но
— не внутри круглых скобок ( )
— не внутри квадратных скобок [ ]
— не внутри фигурных скобок { }
— не внутри тройных кавычек «»» «»»
В тройных кавычках символ перевода строки можно даже экранировать :
>>> s = «»» aaaaaaaaaaa\
bbbbbbbbbbbbbbbbbbbbbbb
ccccccccccccc «»»
>>> s
‘ aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb\nccccccccccccc ‘
>>>
Первый перевод строки экранирован, в итоге вместо трех мы получили две строки.
Мы можем вллючать символы перевода строки в любые строковые литералы с помощью экранированной последовательности \n.
>>> s = «Строка\nНовая строка»
>>> s
‘Строка\nНовая строка’
>>> print(s)
Строка
Новая строка
>>>
В языке Python допустимы следующие экранированные последовательности:
\перевод_строки — экранирует(т.е. игнорирует) символ перевода строки
\\ — экранирует символ обратного слэша
\’ — экранирует символ апострофа
\» — экранирует символ кавычки
\a — символ ascii сигнал (bell, BEL)
\b — символ ascii забой (backspace, BS)
\f — символ ascii перевод формата (formfeed, FF)
\n — символ ascii перевод строки (linefeed, LF)
\N{название} — символ Unicode с заданным названием
\000 — символ с заданным восьмеричным кодом (от \000 до \377)
\r — символ ascii возврат каретки (carriage return, CR)
\t — символ ascii табуляция (tab, TAB)
\v — символ ascii вертикальная табуляция (vertical tab, VT)
\uhhhh — символ Unicode с указанным 16-битным шестнадцатеричным значением.
\Uhhhhhhhh — символ Unicode с указанным 32-битным шестнадцатеричным значением.
\xhh — символ c указанным 8-битным шестнадцатеричным значением.
В некоторых ситуациях, например, при записи регулярных выражений, приходится создавать строки с большим количеством символов обратного слэша.((?:[(]\d+[)])?\s*\d+(?:-\d+)&)$»)
>>>
Если потребуется записать длинный строковый литерал, занимающий две или более строк, но без использования тройных кавычек, то можно конкатенировать строки с экранированием символа перевода строки:
>>> m = «это длинный строковый литерал, который занимает» +\
» вторую строку» +\
» и даже третью»
>>> m
‘это длинный строковый литерал, который занимает вторую строку и даже третью’
>>>
Но более приятный способ с использованием круглых скобок :
>>> m = («это длинный строковый литерал, который занимает»
» вторую строку»
» и даже третью»)
>>> m
‘это длинный строковый литерал, который занимает вторую строку и даже третью’
>>>
3 способа обрезки строки в Python
Общие селекторы
Только точные совпадения
Только точное совпадение
Искать в заголовке
Искать в названии
Искать в содержании
Искать в содержании
Искать в отрывке
Искать в сообщениях
Искать в сообщениях
Искать на страницах
Искать на страницах
- Дом
- Начните здесь
wb_sunny
Строковые функции Python — JournalDev
Python предоставляет множество встроенных функций для управления строками.Python String неизменяем, поэтому все эти функции возвращают новую строку, а исходная строка остается неизменной.
Строковые функции Python
Есть много функций для работы со строкой. Однако запомнить их все невозможно. Итак, я делю их на разные категории.
- Должны знать строковые функции
- Полезно знать строковые функции
- Разные строковые функции
- Встроенные функции, которые работают со строками
- Полезные строковые операции
Должны знать строковые функции
Функция | Описание |
---|---|
format () | Используется для создания форматированной строки из строки шаблона и предоставленных значений. |
split () | Функция split () строки Python используется для разделения строки на список строк на основе разделителя. |
join () | Эта функция возвращает новую строку, которая представляет собой конкатенацию строк в итерации со строковым объектом в качестве разделителя. |
strip () | Используется для обрезки пробелов в строковом объекте. |
format_map () | Python string Функция format_map () возвращает отформатированную версию строки с использованием подстановок из предоставленного сопоставления. |
upper () | Мы можем преобразовать строку в верхний регистр в Python с помощью функции str.upper (). |
lower () | Эта функция создает новую строку в нижнем регистре. |
replace () | Строка Python Функция replace () используется для создания новой строки путем замены некоторых частей другой строки. |
find () | Python String Метод find () используется для поиска индекса подстроки в строке. |
translate () | Python String Функция translate () возвращает новую строку, в которой каждый символ в строке заменяется с использованием данной таблицы перевода. |
Полезно знать Строковые функции
Функция | Описание |
---|---|
encode () | Функция Python string encode () используется для кодирования строки с использованием предоставленной кодировки. |
count () | Python Функция count () возвращает количество вхождений подстроки в заданной строке. |
startwith () | Функция Python startwith () возвращает True, если строка начинается с заданного префикса, в противном случае возвращает False. |
endwith () | Функция Python endwith () возвращает True, если строка заканчивается заданным суффиксом, в противном случае она возвращает False. |
capitalize () | Python String Функция capitalize () возвращает версию строки с заглавной буквы. |
center () | Python string Функция center () возвращает центрированную строку указанного размера. |
casefold () | Строка Python Функция casefold () возвращает свернутую копию строки. Эта функция используется для сравнения строк без учета регистра. |
expandtabs () | Python string Функция expandtabs () возвращает новую строку, в которой символы табуляции (\ t) заменены одним или несколькими пробелами. |
index () | Python Функция index () String возвращает наименьший индекс, в котором находится указанная подстрока. |
__contains __ () | Класс Python String имеет функцию __contains __ (), которую мы можем использовать, чтобы проверить, содержит ли он другую строку или нет. Мы также можем использовать оператор «in» для выполнения этой проверки. |
Разные строковые функции
Функция | Описание |
---|---|
isalnum () | Python string isalnum () функция возвращает True, если она состоит только из буквенно-цифровых символов. |
isalpha () | Python String Функция isalpha () возвращает True, если все символы в строке являются алфавитными, в противном случае — False. |
isdecimal () | Python String Функция isdecimal () возвращает True, если все символы в строке являются десятичными символами, в противном случае — False. |
isdigit () | Python String Функция isdigit () возвращает True, если все символы в строке являются цифрами, в противном случае — False. |
isidentifier () | Python String Функция isidentifier () возвращает True, если строка является допустимым идентификатором в соответствии с определением языка Python. |
islower () | Python String islower () возвращает True, если все символы в регистре в строке строчные и есть хотя бы один регистр, в противном случае возвращается False. |
isnumeric () | Python String Функция isnumeric () возвращает True, если все символы в строке числовые, в противном случае — False. Если строка пуста, эта функция возвращает False. |
isprintable () | Python String Функция isprintable () возвращает True, если все символы в строке печатаются или строка пуста, в противном случае — False. |
isspace () | Python String Функция isspace () возвращает True, если в строке есть только пробельные символы, в противном случае она возвращает False. |
istitle () | Python String istitle () возвращает True, если строка заключена в заголовок и не пуста, в противном случае она возвращает False. |
isupper () | Python String Функция isupper () возвращает True, если все символы в регистре находятся в верхнем регистре. |
rjust (), ljust () | Служебные функции для создания новой строки указанной длины из исходной строки с выравниванием по правому и левому краю. |
swapcase () | Python String Функция swapcase () возвращает новую строку с символами верхнего регистра, преобразованными в нижний регистр и наоборот. |
partition () | Python Функция String partition () разбивает строку на основе разделителя на кортеж с тремя строками. |
splitlines () | Python Функция splitlines () строки возвращает список строк в строке. |
title () | Python String Функция title () возвращает версию строки, основанную на заголовке. |
zfill () | Python String Функция zfill (width) возвращает новую строку указанной ширины. Строка заполняется 0 с левой стороны для создания указанной ширины. |
Встроенные функции, работающие со строкой
Функция | Описание |
---|---|
len () | Python Длина строки может быть определена с помощью встроенной функции len (). |
ascii () | Функция Python ascii () возвращает строковое представление объекта.Эта функция внутренне вызывает функцию repr () и перед возвратом строки представления экранирует символы, отличные от ASCII, с помощью экранирования \ x, \ u или \ U. |
bool () | Python функция bool () возвращает логическое значение для объекта. У класса bool всего два экземпляра — True и False. |
bytearray () | Функция Python bytearray () возвращает объект bytearray, который содержит массив байтов из источника ввода. |
bytes () | Эта функция возвращает объект bytes, который представляет собой неизменяемую последовательность целых чисел в диапазоне 0 <= x <256. |
ord () | Функция Python ord () принимает строковый аргумент из одного символа Unicode и возвращает его целочисленное значение кодовой точки Unicode. |
enumerate () | Функция перечисления Python принимает последовательность, а затем превращает каждый элемент последовательности в кортеж. |
float () | Как следует из названия, функция python float () возвращает число с плавающей запятой из входного аргумента. |
hash () | Эта функция возвращает хеш-значение данного объекта. |
id () | Python функция id () возвращает «идентичность» объекта. Идентификатор объекта — это целое число, которое гарантированно является уникальным и постоянным для этого объекта в течение его времени жизни. |
int () | Функция Python int () возвращает целочисленный объект из указанного ввода. Возвращаемый объект int всегда будет в базе 10. |
map () | Функция Python map () используется для применения функции ко всем элементам указанного итеративного и возвращаемого объекта карты. |
print () | Функция Python print () используется для вывода данных в консоль. |
slice () | Python функция slice () возвращает объект среза, представляющий набор индексов, заданных диапазоном (start, stop, step). |
type () | Эта функция возвращает тип объекта. |
Полезные строковые операции
Нужно ли мне их все запоминать?
Никто не может вспомнить их всех.Вы всегда можете найти их в своей IDE. Изображение ниже из моего файла PyCharm IDE builtins.py.
Строковые функции Python — PyCharm
Я перечислил все методы строк Python?
Я перечислил почти все важные строковые методы Python. Однако некоторые из них могли пропустить. Этот список обновлен до версии Python 3.7. Так что никаких функций, которые появятся в более поздних выпусках, здесь нет, по крайней мере, сейчас. Если вы думаете, что я пропустил какую-то важную функцию, ответьте в комментариях, и я их тоже добавлю.
Функции Python __str __ () и __repr __ ()
Мы рассмотрим две важные объектные функции Python, которые очень полезны при отладке кода Python путем регистрации полезной информации об объекте.
Python __str __ ()
Этот метод возвращает строковое представление объекта. Этот метод вызывается, когда для объекта вызывается функция print ()
или str ()
.
Этот метод должен возвращать объект String. Если мы не реализуем функцию __str __ () для класса, тогда используется встроенная реализация объекта, которая фактически вызывает функцию __repr __ ().
Python __repr __ ()
Python __repr __ () функция возвращает представление объекта. Это может быть любое допустимое выражение Python, такое как кортеж, словарь, строка и т. Д.
Этот метод вызывается, когда для объекта вызывается функция repr ()
, в этом случае функция __repr __ () должна возвращать строку, иначе будет ошибка быть брошенным.
Python __str__ и __repr__, пример
Обе эти функции используются при отладке, давайте посмотрим, что произойдет, если мы не определим эти функции для объекта.
класс Человек:
name = ""
возраст = 0
def __init __ (я, personName, personAge):
self.name = personName
self.age = personAge
p = Человек ('Pankaj', 34)
печать (стр .__ str __ ())
печать (стр .__ repr __ ())
Выход:
<__ main __. Объект Person в 0x10ff22470>
<__ main __. Объект Person в 0x10ff22470>
Как видите, реализация по умолчанию бесполезна. Давайте продолжим и реализуем оба этих метода.
класс Человек:
name = ""
возраст = 0
def __init __ (я, personName, personAge):
self.name = personName
self.age = personAge
def __repr __ (сам):
return {'name': self.name, 'age': self.age}
def __str __ (сам):
return 'Person (name =' + self.name + ', age =' + str (self.age) + ')'
Обратите внимание, что мы возвращаем dict для функции __repr__. Посмотрим, что произойдет, если мы воспользуемся этими методами.
p = Человек ('Pankaj', 34)
# __str __ () пример
печать (p)
печать (стр.__str __ ())
s = str (p)
печать (и)
# __repr __ () пример
печать (стр .__ repr __ ())
print (введите (p .__ repr __ ()))
печать (repr (p))
Выход:
Человек (имя = Панкадж, возраст = 34)
Человек (имя = Панкадж, возраст = 34)
Человек (имя = Панкадж, возраст = 34)
{'name': 'Pankaj', 'age': 34}
<класс 'dict'>
Файл "/Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/str_repr_functions.py", строка 29, в
печать (repr (p))
TypeError: __repr__ вернул не строку (тип dict)
Обратите внимание, что функция repr () выдает ошибку TypeError
, поскольку наша реализация __repr__ возвращает dict, а не строку.
Давайте изменим реализацию функции __repr__ следующим образом:
def __repr __ (сам):
вернуть '{name:' + self.name + ', age:' + str (self.age) + '}'
Теперь он возвращает String, и новый вывод для вызовов представления объекта будет:
{имя: Панкадж, возраст: 34}
<класс 'str'>
{имя: Панкадж, возраст: 34}
Ранее мы упоминали, что если мы не реализуем функцию __str__, то вызывается функция __repr__.Просто прокомментируйте реализацию функции __str__ из класса Person, и print (p)
напечатает {name: Pankaj, age: 34}
.
Разница между функциями __str__ и __repr__
- __str__ должен возвращать строковый объект, тогда как __repr__ может возвращать любое выражение Python.
- Если реализация __str__ отсутствует, функция __repr__ используется как резерв. Если реализация функции __repr__ отсутствует, отката нет.
- Если функция __repr__ возвращает строковое представление объекта, мы можем пропустить реализацию функции __str__.
Итоги
Функции __str__ и __repr__ очень похожи. Мы можем получить представление объекта в формате String, а также в других конкретных форматах, таких как tuple и dict, чтобы получить информацию об объекте.
Вы можете получить полный скрипт Python и другие примеры Python в нашем репозитории GitHub.
Строковая подстрока Python — JournalDev
Подстрока — это часть строки. Строка Python предоставляет различные методы для создания подстроки, проверки наличия подстроки, индекса подстроки и т. Д.В этом руководстве мы рассмотрим различные операции, связанные с подстроками.
Python String Substring
Давайте сначала рассмотрим два различных способа создания подстроки.
Создание подстроки
Мы можем создать подстроку, используя нарезку строки. Мы можем использовать функцию split () для создания списка подстрок на основе указанного разделителя.
s = 'Меня зовут Панкадж'
# создать подстроку с помощью среза
name = s [11:]
печать (имя)
# список подстрок с использованием разделения
l1 = s.Трещина()
печать (l1)
Выход:
Панкадж
["Мой", "Имя", "есть", "Панкадж"]
Проверка наличия подстроки
Мы можем использовать в операторе или функцию find (), чтобы проверить, присутствует ли подстрока в строке или нет.
s = 'Меня зовут Панкадж'
если "Имя" в s:
print ('Подстрока найдена')
если s.find ('Name')! = -1:
print ('Подстрока найдена')
Обратите внимание, что функция find () возвращает индексную позицию подстроки, если она найдена, в противном случае возвращает -1.
Количество вхождений подстроки
Мы можем использовать функцию count (), чтобы найти количество вхождений подстроки в строку.
s = 'Меня зовут Панкадж'
print ('Количество подстрок =', s.count ('a'))
s = 'Это лучшая теорема'
print ('Количество подстрок =', s.count ('Th'))
Выход:
Количество подстрок = 3
Количество подстрок = 3
Найти все индексы подстроки
Встроенной функции для получения списка всех индексов подстроки нет.Однако мы можем легко определить его с помощью функции find ().
def find_all_indexes (input_str, подстрока):
l2 = []
длина = len (input_str)
индекс = 0
в то время как индекс
Вывод: [0, 8, 17]
Вы можете проверить полный скрипт Python и другие примеры Python в нашем репозитории GitHub.
Python String Split Tutorial
Узнайте, как разбить строку в Python с примерами:
Иногда, работая в наших программах, мы можем столкнуться с ситуацией, когда мы хотим разбить строку на более мелкие части для дальнейшей обработки.
В этом руководстве мы подробно рассмотрим разбиение строк в Python с простыми примерами для вашего легкого понимания.
Что такое «строка»?
Все является объектом в Python, поэтому даже строка в Python рассматривается как объект.
Последовательность символов называется Строкой. Символом может быть что угодно, например символы, алфавиты, числа и т. Д. Компьютер не понимает ни один из этих символов или строк, он понимает только двоичные числа i.е. Комбинации 0 и 1.
Мы называем этот метод кодированием, а обратный процесс называется декодированием, а кодирование выполняется на основе ASCII.
Объявление строки
Строки объявляются с использованием двойных кавычек (««) или одинарных кавычек («‘).
Синтаксис:
Имя переменной = «строковое значение»
OR
Имя переменной = «строковое значение»
Пример 1:
my_string = «Привет»
Пример 2:
40 my_string = 'Python'
Пример 3:
my_string = «Hello World» print («String is:», my_string)
Вывод:
Строка: Hello World
Пример 4:
my_string = «Hello Python» print («String is:», my_string)
Вывод:
Строка: Hello Python
Что такое разделение строк?
Как понятно из названия, разделение строки означает разделение данной строки на более мелкие части.
Если вы работали со строками на любом языке программирования, то вы могли знать о конкатенации (объединении строк), а разделение строк — это полная противоположность этому. Чтобы выполнять операции разделения строк, Python предоставляет нам встроенную функцию под названием split ().
Функция Python Split
Метод Python split () используется для разделения строки на фрагменты и принимает один аргумент, называемый разделителем.
Разделителем может быть любой символ или символ.Если разделители не определены, то данная строка будет разделена, и по умолчанию будет использоваться пробел.
Синтаксис:
имя_переменной = «Строковое значение» variable_name.split ()
Пример 1:
my_string = «Добро пожаловать в Python» my_string.split ()
Вывод:
[«Добро пожаловать», «в», «Python»]
Как разбить строку в Python?
В приведенном выше примере мы использовали функцию split () для разделения строки без аргументов.
Давайте посмотрим на несколько примеров разделения строки путем передачи некоторых аргументов.
Пример 1:
my_string = «Яблоко, Апельсин, Манго» print («Перед разделением строка:«, my_string) значение = my_string.split (‘,’) print («После разделения Строка:«, значение)
Вывод:
Строка до разделения: Apple, Orange, Mango
После разделения Строка: [‘Apple’, ‘Orange ‘,’ Mango ‘]
Пример 2:
my_string = «Welcome0To0Python» print («Перед разделением строка:«, my_string) значение = моя_строка.сплит («0») print («После разделения Строка:«, значение)
Вывод:
Перед разделением Строка будет: Welcome0To0Python
После разделения Строка будет: [‘Добро пожаловать’, ‘Кому’, ‘Python’ ]
Пример 3:
my_string = «Яблоко, Апельсин, Манго» fruit1, fruit2, fruit3 = my_string.split (‘,’) print («Первый плод:«, fruit1) print («Второй плод:«, fruit2) print («Третий плод:«, fruit3 »)
Вывод:
Первый плод: яблоко
Второй плод: апельсин
Третий плод: манго
В приведенном выше примере мы разделяем данную строку« Яблоко, Апельсин, Манго »на три части и присвоение этих трех частей различным переменным fruit1, fruit2 и fruit3 соответственно.
Разделить строку на список
Всякий раз, когда мы разбиваем строку в Python, она всегда будет преобразована в список.
Как вы знаете, мы не определяем какие-либо типы данных в Python, в отличие от других языков программирования. Следовательно, всякий раз, когда мы используем функцию split (), лучше назначить ее какой-либо переменной, чтобы к ней можно было легко обращаться по очереди с помощью расширенного цикла for.
Пример 1:
my_string = «Яблоко, Апельсин, Манго» value = my_string.split (',')
для элемента в значении:
print (item)
Вывод:
Apple
Orange
Mango
Разделить строку на массив
Как мы обсуждали ранее, всякий раз, когда мы разделяем строку, она всегда будет преобразована в массив.Однако способ доступа к данным будет отличаться.
Используя функцию split (), мы разбиваем строку на несколько частей и присваиваем ее некоторой переменной, поэтому с помощью индекса мы можем получить доступ к сломанным строкам, и эта концепция называется Массивы.
Давайте посмотрим, как мы можем получить доступ к разделенным данным с помощью массивов.
Пример 1:
my_string = «Яблоко, Апельсин, Манго» значение = my_string.split (‘,’) print («Первый элемент:«, значение [0]) print («Второй элемент:«, значение [1]) print («Третий элемент:«, значение [2] »)
Вывод:
Первый элемент: Apple
Второй элемент: оранжевый
Третий элемент: Mango
Tokenize String
Когда мы разбиваем строку , он разбивается на более мелкие части, и эти более мелкие части называются токенами.
Пример:
my_string = «Audi, BMW, Ferrari» tokens = my_string.split (‘,’) print («Строковые токены:«, токены »)
Вывод:
Строковые токены: [‘Audi’, ‘BMW’, ‘Ferrari’]
В приведенном выше примере называются Audi, BMW и Ferrari токены строки.
«Audi, BMW, Ferrari»
Разделение строки по символам
В Python у нас есть встроенный метод list () для разделения строк на последовательность символов.
Функция list () принимает один аргумент, который является именем переменной, в которой хранится строка.
Синтаксис:
имя_переменной = «Строковое значение» list (имя_переменной)
Пример:
my_string = «Python» токены = список (моя_строка) print («Строковые токены:«, токены »)
Вывод:
Строковые токены: [‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]
Заключение
Мы можем завершить это руководство следующими указателями:
- Разделение строки используется для разбиения строки на фрагменты.
- Python предоставляет встроенный метод split () для разделения строк.
- Мы можем получить доступ к разделенной строке с помощью списка или массивов.
- Разделение строки обычно используется для извлечения определенного значения или текста из данной строки.
Приятного чтения !!
Python Strings (Учебное пособие с примерами)
В этой статье вы подробно узнаете о строках Python и различных типах функций и операций со строками.
Строки Python: Введение
Строка — это последовательность символов, которая рассматривается как один элемент данных. Строки Python — это массив символов или любая группа символов, определенная в двойных или одинарных кавычках.
Например, «Это строка» или «Это строка».
Символы в строке сохраняются в последовательной ячейке памяти, поскольку строка обрабатывается как массив символов. Каждый символ занимает 1 байт в куче памяти.
Строки
Python также неизменяемы, то есть они не могут быть изменены после создания.
Создание строк Python
Создать строки в Python так же просто, как присвоить значение переменной. Присваиваемое значение должно заключаться либо в двойные кавычки ""
, либо в одинарные кавычки ""
для строки.
Строковый литерал также может состоять из нескольких строк. В таких случаях используются тройные кавычки.
Вот примеры, демонстрирующие строки Python.
>>> # использование одинарных кавычек
>>> py_str = 'YOLO'
>>> печать (py_str)
ЙОЛО
>>> # использование двойных кавычек
>>> py_str = "Привет"
>>> печать (py_str)
Привет всем
>>> # использование тройных кавычек для многострочных строк
>>> py_str = "" "Это первая строка
и это вторая строка. "" "
>>> печать (py_str)
Это первая строка
а это вторая строка.
Как объединить строки в Python?
Конкатенация означает соединение двух или более строк вместе.
В Python это достигается с помощью оператора +
.
>>> # объединение двух строк
>>> py_str = "Привет" + "там"
>>> печать (py_str)
всем привет
>>> # объединение нескольких строк
>>> py_str = "Привет" + "там" + "программисты"
>>> печать (py_str)
Привет программисты
>>> # используя объединение + и оператор присваивания =
>>> x = "Python"
>>> y = "Строки"
>>> x + = y # это эквивалентно x = x + y
>>> print (x)
Строки Python
Как рассчитать длину строки?
Python имеет встроенную функцию len (string_name)
, которая вычисляет и возвращает длину строки, предоставленной в качестве аргумента.
>>> # использование len () для определения длины строки
>>> py_str = "ЙОЛО ЙОЛО"
>>> print (len (py_str)) # чтобы напечатать длину строки
9
В этом примере длина строки равна 9, потому что она также считает пробелы между ними.
Как получить доступ к символам в строке Python?
Создав строку Python, мы не можем изменить их, но можем получить доступ к символам в строке и использовать их в дальнейших операциях.
В Python доступ к отдельным символам или элементам осуществляется с помощью индексации, а доступ к диапазону символов или строковых фрагментов осуществляется с помощью срезов. Прежде чем переходить к примерам, дайте нам знать об индексировании и нарезке.
Прежде чем переходить к примерам, дайте нам знать об индексировании и нарезке.
Что такое индексация?
Индексирование фактически означает поиск элемента в последовательности Python ( список
, строка
, кортеж
, словарь или любой другой) по его позиции в этой последовательности.Эта индексация начинается с нуля, что означает, что первый элемент последовательности содержит индекс '0'
.
Python имеет оператор индексации '[]'.
Есть два способа индексирования строки или любой последовательности в Python:
- индекс с положительными целыми числами: Индекс слева, начиная с
0
и0
является индексом первого элемента в строке или последовательности - индекс с отрицательным целым числом: Индекс справа, начиная с
-1
и-1
, являющийся индексом последнего элемента в строке или последовательности.
Например, рассмотрим следующую строку из 4 символов.
py_str = "abcd"
Теперь, если мы проиндексируем положительные целые числа с помощью оператора индексации '[]'
:
py_str [0] = a
, py_str [1] = b
, py_str [2] = c
, py_str [3] = d
А если индексировать отрицательными целыми числами, то
py_str [-1] = d
, py_str [-2] = c
, py_str [-3] = b
, py_str [-4] = a
Примечание: В индексировании разрешены только целые числа.
Общие ошибки программирования
Попытка получить доступ к 5-му символу в строке из 4 символов вызовет ошибку: IndexError: индекс строки вне диапазона
. А также использование чисел с плавающей запятой вместо целых для индексации также вызовет ошибку: TypeError
Что такое нарезка в Python?
Нарезка по смыслу — это в основном нарезание или получение набора значений из определенной последовательности.
При нарезке мы определяем начальную точку для начала извлечения значений, конечную точку для остановки извлечения (значение конечной точки не включается) и размер шага. Размер шага по умолчанию равен 1, если это не указано явно.
И извлеченный набор символов из строки известен как фрагменты Python.
py_ssequence [начало: конец: размер_шага]
Теперь, когда мы знаем об индексировании и нарезке, давайте узнаем об использовании нарезки и индексации для доступа к символам из строк Python с примерами.
- Для доступа к одиночному символу: Индексирование
py_str [index_char]
Где index_char — это индекс символа, к которому нужно получить доступ из строки py_str.
Например, если у нас есть строка с именем py_str
, мы можем получить доступ к ее 5-му символу, используя py_str [4]
, поскольку индексирование начинается с 0.
- Чтобы получить доступ к диапазону символов или сегменту строки: Нарезка
py_str [m, n]
Это вернет символы, начиная с m-го символа до n-го символа из строки, исключая n-й символ.
Пример:
>>> py_str = "Программирование"
>>> # доступ к 4-му символу с использованием положительного целого числа
>>> print (py_str [3]) # помните, что индексирование начинается с 0
грамм
>>> # доступ к 3-му символу справа с помощью отрицательного целого числа
>>> print (py_str [-3]) # индексирование справа начинается с -1
я
>>> # нарезка 1-го символа на 7-й символ
>>> print (py_str [0: 7] # если не упомянутый размер шага равен 1
Progra
>>> # нарезка 1-го символа на 5-й последний
>>> print (py_str [0: -4])
Программа
>>> # для доступа ко всей строке
>>> print (py_str [:])
Программирование
>>> # чтобы вырезать всю строку, начиная со 2-го символа
>>> print (py_str [1:])
программирование
Итерация по строке в Python
Перебор строк Python с использованием цикла for.
py_str = "Привет"
count = 1
для алфавитов в py_str:
печать (алфавиты)
count = count + 1
Выход:
Это даст следующий результат.
H е г
Теперь давайте напишем еще один пример, используя цикл while, чтобы проверить, присутствует ли символ в строке или нет.
py_str = "trytoprogram"
l = len (py_str)
count = 0
в то время как count
Выход:
Это даст следующий результат.
найдено символов
Форматирование строки Python: escape-символы
Управляющий символ - это непечатаемый символ, который представлен обратной косой чертой '\'
и интерпретируется по-разному.
Когда нам нужны escape-последовательности?
Что ж, при кодировании нам во многих случаях нужны escape-последовательности. Вот один пример.
В Python строковый литерал в двойных кавычках может легко иметь одинарные кавычки между ними, а строка одинарных кавычек может иметь двойные кавычки между ними.
Но что, если в строке есть как двойные, так и одинарные кавычки.
рассмотрим следующий пример.
>>> print ("Гэри сказал:" Я не люблю кошек ".")
SyntaxError: недопустимый синтаксис
Произошла ошибка SyntaxError: недопустимый синтаксис
.
Это потому, что, когда интерпретатор обнаружил закрывающую двойную кавычку в I
, он интерпретировал как конец строки, следовательно, генерировал синтаксическую ошибку .
Мы можем исправить такие ошибки с помощью тройных кавычек, но когда тройные кавычки встречаются между строкой, это снова вызывает ошибку.
Итак, в таких случаях для генерации кавычек используются escape-последовательности. Вот пример, демонстрирующий решение с использованием escape-последовательностей.
>>> # использование тройных кавычек
>>> print ("" "Гэри сказал -" Я не люблю кошек "." "")
Гэри сказал: «Я не люблю кошек».
>>> # использование escape-последовательностей \ "для печати двойных кавычек и \ 'для одинарных кавычек
>>> print ("Гэри сказал - \" Я не люблю кошек \ ".")
Гэри сказал: «Я не люблю кошек».
Вот список escape-последовательностей в Python.
Оператор | Значение |
---|---|
\ новая строка | Новая строка игнорируется |
\ | Обратная косая черта (\) |
\ ’ | Одинарная кавычка (‘) |
\ ” | Двойная кавычка (”) |
\ а | Звонок или предупреждение в формате ASCII |
\ б | ASCII backspace |
\ f | Подача формы ASCII |
\ п | Перевод строки ASCII |
\ r | ASCII возврат каретки |
\ т | Горизонтальная вкладка ASCII |
\ v | Вертикальная табуляция ASCII |
\ ooo | ASCII-символ с восьмеричным значением ooo |
\ ххх | ASCII-символ с шестнадцатеричным значением hh |
Встроенные методы Python для обработки строк
Python имеет множество встроенных функций или методов для работы со строками.Вот табличный список методов Python для обработки строк.
Встроенные методы Python с описанием |
---|
all (str) Возвращает истину, если все элементы в итерации верны. |
any (str) Возвращает истину, если какой-либо элемент в итерации верен. |
ascii (str) Возвращает версию для печати строки «str». |
capitalize () Делает первую букву строки заглавной. |
center () Возвращает строку с указанным символом, заполненную пробелами. |
count (m) Подсчитывает, сколько раз m встречается в строке. |
декодировать (encoding = ’UTF-8 ′, errors =’ strict ’) Он декодирует строку с использованием кодека, зарегистрированного для кодирования. |
encode (encoding = ’UTF-8 ′, errors =’ strict ’) Возвращает закодированную версию строки. |
заканчивается на (суффикс) Проверяет, заканчивается ли строка указанным символом или суффиксом. |
expandtabs (tabsize) Раскрывает табуляции в строке с несколькими пробелами. |
find (str) Определите, присутствует ли «str» в строке или нет. |
index (str) Возвращает индекс подстроки «str», но вызывает исключение, если «str» не найдена. |
isalnum () Возвращает истину, если строка содержит хотя бы 1 символ и все символы являются буквенно-цифровыми, и ложно в противном случае. |
isalpha () Возвращает истину, если строка содержит буквенно-цифровой символ. |
isdigit () Проверяет, содержит ли строка только цифры .. |
islower () Возвращает истину, если строка содержит символы нижнего регистра. |
isnumeric () Возвращает истину, если строка содержит только числовые цифры. |
isspace () Используется для проверки пробелов в строке. |
istitle () Проверяет, правильно ли написана строка в заголовке или нет. Вернуть истину, если в заголовке. |
isupper () Возвращает истину, если строка содержит прописные буквы. |
join (seq) Возвращает конкатенированные строковые представления элементов в последовательности «seq». |
len (str) Возвращает длину строки «str». |
ljust (width) Возвращает выровненную по левому краю строку заданной ширины. |
lower () Преобразует все прописные буквы в строке в строчные. |
lstrip () Удаляет все начальные символы или пробелы в строке. |
maketrans () Возвращает таблицу перевода, которая используется в функции перевода. |
max (str) Возвращает максимальный алфавит из строки «str». |
min (str) Возвращает минимальный алфавит из строки str. |
replace (old, new) Заменяет «старую» подстроку на «новую» строку. |
rfind (str, start, end) Возвращает наивысший индекс подстроки. |
rindex (str) Это то же самое, что index (), но поиск в строке назад. |
rjust (width) Возвращает выровненную по правому краю строку заданной ширины. |
rstrip () Удаляет все завершающие символы или пробелы в строке. |
split (str) Разделение строки слева. |
splitlines () Разбивает все новые строки в строке. |
начинается с (str) Проверяет, начинается ли строка с символа «str». |
strip ([chars]) Выполняет как lstrip (), так и rstrip () для данной строки. |
swapcase () Преобразует верхний регистр в символы нижнего регистра и наоборот. |
title () Возвращает строку заголовка в регистре. |
translate (table) Переводит строку в соответствии с таблицей трансляции, полученной с помощью функции maketrans (). |
upper () Преобразует строчные буквы в прописные в строке. |
zfill (width) Возвращает строку, заполненную нулями, ширина - это длина строки, заполненной нулями. |
isdecimal () Возвращает истину, если строка содержит только десятичные символы. |