Строки функции python: Строковые методы в Python. Узнаём популярные и эксклюзивные… | by Андрей Шагин | NOP::Nuances of Programming

Содержание

Строки и символьные данные в Python — Мартын-Назаров Кирилл

В статье по основным типам данных в Python вы узнали, как определить строки: объекты, содержащие последовательности символьных данных. Обработка символьных данных является неотъемлемой частью программирования.

Вот что вы узнаете из этого урока: Python предоставляет богатый набор операторов, функций и методов для работы со строками. Когда вы закончите с этим уроком, вы будете знать, как получить доступ и извлечь части строк, а также будете знакомы с методами, которые доступны для манипулирования и изменения строковых данных.

Вы также познакомитесь с двумя другими объектами Python, используемыми для представления необработанных байтовых данных, типами bytes и bytearray.

Обработка строк

В следующих разделах описаны операторы, методы и функции, доступные для работы со строками.

Операторы строк

Вы уже видели операторы + и *, применяемые к числовым операндам в уроке по операторам и выражениям в Python. Эти два оператора могут быть применены и к строкам.

Оператор

+

Оператор + объединяет строки. Он возвращает строку, состоящую из операндов, соединенных вместе, как показано здесь:


>>> s = 'foo'
>>> t = 'bar'
>>> u = 'baz'

>>> s + t
'foobar'
>>> s + t + u
'foobarbaz'

>>> print('Go team' + '!!!')
Go team!!!

Оператор

*

Оператор * создает несколько копий строки. Если s-строка, а n-целое число, то любое из следующих выражений возвращает строку, состоящую из n сцепленных копий s:

s * n
n * s

Вот примеры обеих форм:


>>> s = 'foo.'

>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'

Операнд множителя n должен быть целым числом. Вы могли бы подумать, что это должно быть положительное целое число, но забавно, что оно может быть нулевым или отрицательным, и в этом случае результатом будет пустая строка:


>>> 'foo' * -8
''

Если бы вы создали строковую переменную и инициализировали ее пустой строкой, присвоив ей значение 'foo' * -8, любой справедливо подумал бы, что вы немного глупы. Но это сработает.

Оператор

in

Python также предоставляет оператор членства, который можно использовать со строками. Оператор in возвращает True, если первый операнд содержится во втором, и False в противном случае:


>>> s = 'foo'

>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False

Существует также оператор not in, который делает обратное:


>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False

Встроенные строковые функции

Как вы видели в уроке по основным типам данных в Python, Python предоставляет множество функций, встроенных в интерпретатор и всегда доступных. Вот некоторые из них, которые работают со строками:

Функция Описание
chr() Преобразует целое число в символ
ord() Преобразует символ в целое число
len() Возвращает длину строки
str() Возвращает строковое представление объекта

Они более подробно рассматриваются ниже.

ord(c)

Возвращает целочисленное значение для данного символа.

На самом базовом уровне компьютеры хранят всю информацию в виде чисел. Для представления символьных данных используется схема перевода, которая сопоставляет каждый символ с его репрезентативным номером.

Самая простая схема в обычном использовании называется ASCII. Он охватывает общие латинские символы, с которыми вы, вероятно, больше всего привыкли работать. Для этих символов ord(c) возвращает значение ASCII для символа c:


>>> ord('a')
97
>>> ord('#')
35

Символы ASCII встречаются довольно часто. Но в мире существует множество различных языков и бесчисленное множество символов и глифов, которые появляются в цифровых медиа. Полный набор символов, которые потенциально могут потребоваться для представления в компьютерном коде, намного превосходит обычные латинские буквы, цифры и символы, которые вы обычно видите.

Unicode — это амбициозный стандарт, который пытается предоставить числовой код для каждого возможного символа, на каждом возможном языке, на каждой возможной платформе. Python 3 широко поддерживает Юникод, включая разрешение символов Юникода в строках.

Пока вы остаетесь в области общих символов, существует небольшая практическая разница между ASCII и Unicode. Но функция ord() также возвращает числовые значения для символов Юникода:


>>> ord('€')
8364
>>> ord('∑')
8721

chr(n)

Возвращает символьное значение для данного целого числа.

chr() делает обратное ord(). При заданном числовом значении n chr(n) возвращает строку, представляющую символ, соответствующий n:


>>> chr(97)
'a'
>>> chr(35)
'#'

chr() также обрабатывает символы Юникода:


>>> chr(8364)
'€'
>>> chr(8721)
'∑'

len(s)

Возвращает длину строки.

С помощью функции len() вы можете проверить длину строки Python. len(s) возвращает количество символов в s:


>>> s = 'I am a string.'
>>> len(s)
14

str(obj)

Возвращает строковое представление объекта.

Практически любой объект в Python может быть представлен в виде строки. str(obj) возвращает строковое представление объекта obj:


>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'

Индексация Строк

Часто в языках программирования отдельные элементы в упорядоченном наборе данных могут быть доступны непосредственно с помощью числового индекса или ключевого значения. Этот процесс называется индексированием.

В Python строки-это упорядоченные последовательности символьных данных, и поэтому их можно индексировать таким образом. Доступ к отдельным символам в строке можно получить, указав имя строки, за которым следует число в квадратных скобках ([]).

Индексация строк в Python основана на нуле: первый символ в строке имеет индекс 0, следующий-индекс 1 и так далее. Индекс последнего символа будет равен длине строки минус единица.
Например, схематическое представление индексов строки ‘foobar‘ будет выглядеть следующим образом:

Отдельные символы могут быть доступны по индексу следующим образом:


>>> s = 'foobar'

>>> s[0]
'f'
>>> s[1]
'o'
>>> s[3]
'b'
>>> len(s)
6
>>> s[len(s)-1]
'r'

Попытка индексировать за пределами конца строки приводит к ошибке:


>>> s[6]
Traceback (most recent call last):
  File " <pyshell#17>", line 1, in  <module> 
    s[6]
IndexError: string index out of range

Строковые индексы также могут быть заданы отрицательными числами, и в этом случае индексация происходит от конца строки назад: -1 относится к последнему символу, -2-к предпоследнему символу и т. д. Вот та же самая диаграмма, показывающая как положительные, так и отрицательные индексы в строке ‘foobar‘:

Вот несколько примеров негативной индексации:


>>> s = 'foobar'

>>> s[-1]
'r'
>>> s[-2]
'a'
>>> len(s)
6
>>> s[-len(s)]
'f'

Попытка индексирования с отрицательными числами за пределами начала строки приводит к ошибке:


>>> s[-7]
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    s[-7]
IndexError: string index out of range

Для любой непустой строки s, s[len(s)-1] и s[-1] оба возвращают последний символ. Нет никакого индекса, который имеет смысл для пустой строки.

Нарезка строк

Python также допускает форму синтаксиса индексирования, которая извлекает подстроки из строки, известную как нарезка строк. Если s является строкой, то выражение вида [m:n] возвращает часть s, начинающуюся с позиции m и вплоть до позиции n, но не включая ее:


>>> s = 'foobar'
>>> s[2:5]
'oba'

Помните: строковые индексы основаны на нуле. Первый символ в строке имеет индекс 0. Это относится как к стандартному индексированию, так и к нарезке.

Опять же, второй индекс указывает первый символ, который не включен в результат—символ ‘r‘ (s[5]) в приведенном выше примере. Это может показаться немного неинтуитивным, но это приводит к такому результату, который имеет смысл: выражение s[m:n] вернет подстроку длиной n - m символов, в данном случае 5 - 2 = 3.

Если вы опустите первый индекс, срез начнется в начале строки. Таким образом, s[:m] и s[0:m] эквивалентны:


>>> s = 'foobar'

>>> s[:4]
'foob'
>>> s[0:4]
'foob'

Аналогично, если вы опустите второй индекс, как в s[n:], срез простирается от первого индекса до конца строки. Это хорошая, лаконичная альтернатива более громоздкому s[n:len(s)]:


>>> s = 'foobar'

>>> s[2:]
'obar'
>>> s[2:len(s)]
'obar'

Для любых строк и любого целого числа n (0 = n = len(s)), s[:n] + s[n:] будет равно s:


>>> s = 'foobar'

>>> s[:4] + s[4:]
'foobar'
>>> s[:4] + s[4:] == s
True

Опущение обоих индексов возвращает исходную строку целиком. Буквально. Это не копия, а ссылка на исходную строку:


>>> s = 'foobar'
>>> t = s[:]
>>> id(s)
59598496
>>> id(t)
59598496
>>> s is t
True

Если первый индекс в срезе больше или равен второму индексу, Python возвращает пустую строку. Это еще один запутанный способ сгенерировать пустую строку, если вы ее искали:


>>> s[2:2]
''
>>> s[4:2]
''

Отрицательные индексы также могут быть использованы при нарезке. -1 относится к последнему символу, -2-к предпоследнему и так далее, как и в случае простого индексирования. На приведенной ниже диаграмме показано, как срезать подстроку «oob«из строки «foobar«, используя как положительные, так и отрицательные индексы:

Вот соответствующий код Python:


>>> s = 'foobar'

>>> s[-5:-2]
'oob'
>>> s[1:4]
'oob'
>>> s[-5:-2] == s[1:4]
True

Указание шага в срезе строки

Существует еще один вариант синтаксиса нарезки, который следует обсудить. Добавление дополнительного : и третий индекс обозначает шаг, который указывает, сколько символов нужно перепрыгнуть после извлечения каждого символа в срезе.

Например, для строки ‘foobar‘ фрагмент 0:6:2 начинается с первого символа и заканчивается последним символом (целой строкой), а каждый второй символ пропускается. Это показано на следующей диаграмме:

Аналогично, 1:6:2 задает срез, начинающийся со второго символа (индекс 1) и заканчивающийся последним символом, и снова значение шага 2 вызывает пропуск всех остальных символов:

Иллюстративный REPL код показан здесь:


>>> s = 'foobar'

>>> s[0:6:2]
'foa'

>>> s[1:6:2]
'obr'

Как и при любом разрезании, первый и второй индексы могут быть опущены, а по умолчанию используются соответственно первый и последний символы:


>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::5]
'11111'
>>> s[4::5]
'55555'

Вы также можете указать отрицательное значение шага, и в этом случае Python делает шаг назад через строку. В этом случае начальный/первый индекс должен быть больше конечного/второго индекса:


>>> s = 'foobar'
>>> s[5:0:-2]
'rbo'

В приведенном выше примере 5:0:-2 означает “начать с последнего символа и отступить назад на 2, вплоть до первого символа, но не включая его.”

Когда вы отступаете назад, если первый и второй индексы опущены, значения по умолчанию меняются интуитивно: первый индекс по умолчанию находится в конце строки, а второй индекс по умолчанию-в начале. Вот вам пример:


>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::-5]
'55555'

Это обычная парадигма для обращения строки вспять:


>>> s = 'If Comrade Napoleon says it, it must be right.'
>>> s[::-1]
'.thgir eb tsum ti ,ti syas noelopaN edarmoC fI'

Интерполяция переменных в строку

В Python версии 3.6 был введен новый механизм форматирования строк. Эта функция формально называется форматированным строковым литералом, но чаще всего упоминается под псевдонимом f-string.

Одна простая функция вне строк, которую вы можете начать использовать сразу же,-это переменная интерполяция. Вы можете указать имя переменной непосредственно в литерале f-string, и Python заменит это имя соответствующим значением.

Например, предположим, что вы хотите отобразить результат арифметического вычисления. Это можно сделать с помощью простого оператора print(), разделяющего числовые значения и строковые литералы запятыми:


>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print('The product of', n, 'and', m, 'is', prod)
The product of 20 and 25 is 500

Но это слишком громоздко. Чтобы сделать то же самое, используйте f-строку:

  • Укажите либо нижний регистр f либо верхний регистр F непосредственно перед открывающей кавычкой строкового литерала. Это говорит Python, что это f-строка вместо стандартной строки.
  • Укажите любые переменные, которые будут интерполированы в фигурных скобках ({}).

Переделанный с помощью f-строки, приведенный выше пример выглядит гораздо чище:


>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print(f'The product of {n} and {m} is {prod}')
The product of 20 and 25 is 500

Любой из трех механизмов цитирования Python может быть использован для определения f-строки:


>>> var = 'Bark'

>>> print(f'A dog says {var}!')
A dog says Bark!
>>> print(f"A dog says {var}!")
A dog says Bark!
>>> print(f'''A dog says {var}!''')
A dog says Bark!

Изменение Строк

Короче говоря, вы не можете. Строки-это один из типов данных, которые Python считает неизменяемыми, то есть не подлежащими изменению. Фактически, все типы данных, которые вы видели до сих пор, неизменны. (Python предоставляет типы данных, которые являются изменяемыми, как вы скоро увидите.)

Подобное утверждение приведет к ошибке:


>>> s = 'foobar'
>>> s[3] = 'x'
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    s[3] = 'x'
TypeError: 'str' object does not support item assignment

По правде говоря, нет особой необходимости изменять строки. Обычно вы можете легко выполнить то, что хотите, создав копию исходной строки, которая имеет желаемое изменение на месте. В Python есть очень много способов сделать это. Вот одна из возможностей:


>>> s = s[:3] + 'x' + s[4:]
>>> s
'fooxar'

Для этого также существует встроенный строковый метод:


>>> s = 'foobar'
>>> s = s.replace('b', 'x')
>>> s
'fooxar'

Читайте дальше для получения дополнительной информации о встроенных строковых методах!

Встроенные строковые методы

В уроке по переменным в Python вы узнали, что Python-это высоко объектно-ориентированный язык. Каждый элемент данных в программе Python является объектом.

Вы также знакомы с функциями: вызываемыми процедурами, которые можно вызвать для выполнения определенных задач.

Методы подобны функциям. Метод — это специализированный тип вызываемой процедуры, тесно связанный с объектом. Как и функция, метод вызывается для выполнения отдельной задачи, но он вызывается для конкретного объекта и имеет знание о своем целевом объекте во время выполнения.

Синтаксис вызова метода для объекта выглядит следующим образом:


obj.foo(<args>)

Это вызывает метод .foo() на объекте obj.<args> указывает аргументы, передаваемые методу (если таковые имеются).

Вы узнаете гораздо больше об определении и вызове методов позже в обсуждении объектно-ориентированного программирования. На данный момент цель состоит в том, чтобы представить некоторые из наиболее часто используемых встроенных методов, поддерживаемых Python для работы со строковыми объектами.

В следующих определениях методов аргументы, указанные в квадратных скобках ([]), являются необязательными.

Преобразования Регистра

Методы этой группы выполняют преобразование регистра в целевой строке.

s.capitalize()

Возвращает целевую строку с заглавной первой буквой.

s.capitalize() возвращает копию s с первым символом, преобразованным в верхний регистр, и всеми остальными символами, преобразованными в нижний регистр:


>>> s = 'foO BaR BAZ quX'
>>> s.capitalize()
'Foo bar baz qux'

Неалфавитные символы остаются неизменными:


>>> s = 'foo123#BAR#.'
>>> s.capitalize()
'Foo123#bar#.'

s.lower()

Преобразует буквенные символы в строчные.

s.lower() возвращает копию s со всеми заглавными символами, преобразованными в нижний регистр:


>>> 'FOO Bar 123 baz qUX'.lower()
'foo bar 123 baz qux'

s.swapcase()

Меняет местами регистр буквенных символов.

s.swapcase() возвращает копию s с заглавными буквенными символами, преобразованными в строчные и наоборот:


>>> 'FOO Bar 123 baz qUX'.swapcase()
'foo bAR 123 BAZ Qux'

s.title()

Преобразует целевую строку в » регистр заголовка.”

s.title() возвращает копию s, в которой первая буква каждого слова преобразуется в верхний регистр, а остальные буквы-в нижний:


>>> 'the sun also rises'.title()
'The Sun Also Rises'

Этот метод использует довольно простой алгоритм. Он не пытается провести различие между важными и неважными словами, и он не обрабатывает апострофы, притяжательные или аббревиатуры изящно:


>>> "what's happened to ted's IBM stock?".title()
"What'S Happened To Ted'S Ibm Stock?"

s.upper()

Преобразует буквенные символы в заглавные.

s.upper() возвращает копию s со всеми буквенными символами, преобразованными в верхний регистр:


>>> 'FOO Bar 123 baz qUX'.upper()
'FOO BAR 123 BAZ QUX'

Найти и заменить

Эти методы предоставляют различные средства поиска целевой строки для указанной подстроки.

Каждый метод в этой группе поддерживает необязательные аргументы <start> и <end>. Они используются для нарезки строк: действие метода ограничено частью целевой строки, начинающейся с позиции символа <start> и продолжающейся до позиции символа <end>, но не включающей ее. Если < start> указан, а <end> нет, то метод применяется к части целевой строки от <start> до конца строки.

s.count(<sub>[, <start>[, <end>]])

Подсчитывает вхождения подстроки в целевую строку.

s.count(<sub>) возвращает количество неперекрывающихся вхождений подстроки <sub> в s:


>>> 'foo goo moo'.count('oo')
3

Подсчет ограничен количеством вхождений в подстроку, обозначенную <start> и <end>, если они указаны:


>>> 'foo goo moo'.count('oo', 0, 8)
2

s.endswith(<suffix>[, <start>[, <end>]])

Определяет, заканчивается ли целевая строка заданной подстрокой.

s.endswith(<suffix>) возвращает True, если s заканчивается указанным <suffix>, и False в противном случае:


>>> 'foobar'.endswith('bar')
True
>>> 'foobar'.endswith('baz')
False

Сравнение ограничивается подстрокой, обозначенной <start> и <end>, если они указаны:


>>> 'foobar'.endswith('oob', 0, 4)
True
>>> 'foobar'.endswith('oob', 2, 4)
False

s.find(<sub>[, <start>[, <end>]])

Выполняет поиск в целевой строке заданной подстроки.

Вы можете использовать .find(), чтобы увидеть, содержит ли строка определенную подстроку. s.find(<sub>) возвращает самый низкий индекс в s, где находится подстрока <sub> :


>>> 'foo bar foo baz foo qux'.find('foo')
0

Этот метод возвращает -1, если указанная подстрока не найдена:


>>> 'foo bar foo baz foo qux'.find('grault')
-1

Поиск ограничен подстрокой, указанной <start> и <end>, если они указаны:


>>> 'foo bar foo baz foo qux'.find('foo', 4)
8
>>> 'foo bar foo baz foo qux'.find('foo', 4, 7)
-1

s.index(<sub>[, <start>[, <end>]])

Выполняет поиск в целевой строке заданной подстроки.

Этот метод идентичен методу .find(), за исключением того, что он вызывает ошибку, если <sub> не найден, а не возвращает -1:


>>> 'foo bar foo baz foo qux'.index('grault')
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    'foo bar foo baz foo qux'.index('grault')
ValueError: substring not found

s.rfind(<sub>[, <start>[, <end>]])

Поиск в целевой строке заданной подстроки, начинающейся в конце.

s.rfind(<sub>) возвращает самый высокий индекс в s, где найдена подстрока <sub> :


>>> 'foo bar foo baz foo qux'.rfind('foo')
16

Как и в случае с .find(), если подстрока не найдена, возвращается -1:


>>> 'foo bar foo baz foo qux'.rfind('grault')
-1

Поиск ограничен подстрокой, указанной <start> и <end>, если они указаны:


>>> 'foo bar foo baz foo qux'.rfind('foo', 0, 14)
8
>>> 'foo bar foo baz foo qux'.rfind('foo', 10, 14)
-1

s.rindex(<sub>[, <start>[, <end>]])

Поиск в целевой строке заданной подстроки, начинающейся в конце.

Этот метод идентичен методу .rfind(), за исключением того, что он вызывает ошибку, если <sub> не найден, а не возвращает -1:


>>> 'foo bar foo baz foo qux'.rindex('grault')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    'foo bar foo baz foo qux'.rindex('grault')
ValueError: substring not found

s.startswith(<prefix>[, <start>[, <end>]])

Определяет, начинается ли целевая строка с заданной подстроки.

При использовании метода .startswith() s.startswith(<suffix>) возвращает True, если s начинается с указанного <suffix> , и False в противном случае:


>>> 'foobar'.startswith('foo')
True
>>> 'foobar'.startswith('bar')
False

Сравнение ограничивается подстрокой, обозначенной <start> и <end>, если они указаны:


>>> 'foobar'.startswith('bar', 3)
True
>>> 'foobar'.startswith('bar', 3, 2)
False

Классификация Символов

Методы этой группы классифицируют строку на основе содержащихся в ней символов.

s.isalnum()

Определяет, состоит ли целевая строка из буквенно-цифровых символов.

s.isalnum() возвращает True, если s непусто и все его символы являются буквенно-цифровыми(либо буквой, либо цифрой), и False в противном случае:


>>> 'abc123'.isalnum()
True
>>> 'abc$123'.isalnum()
False
>>> ''.isalnum()
False

s.isalpha()

Определяет, состоит ли целевая строка из буквенных символов.

s.isalpha() возвращает True, если s непусто и все его символы алфавитны, и False в противном случае:


>>> 'ABCabc'.isalpha()
True
>>> 'abc123'.isalpha()
False

s.isdigit()

Определяет, состоит ли целевая строка из цифровых символов.

Вы можете использовать метод .isdigit(), чтобы проверить, состоит ли ваша строка только из цифр. s.isdigit() возвращает True, если s непусто и все его символы являются числовыми цифрами, и False в противном случае:


>>> '123'.isdigit()
True
>>> '123abc'.isdigit()
False

s.isidentifier()

Определяет, является ли целевая строка допустимым идентификатором Python.

s.isidentifier() возвращает True, если s является допустимым идентификатором Python в соответствии с определением языка, и False в противном случае:


>>> 'foo32'.isidentifier()
True
>>> '32foo'.isidentifier()
False
>>> 'foo$32'.isidentifier()
False

Примечание: .isidentifier() вернет True для строки, которая соответствует ключевому слову Python, даже если это на самом деле не является допустимым идентификатором:


>>> 'and'.isidentifier()
True

Вы можете проверить, соответствует ли строка ключевому слову Python, используя функцию iskeyword(), которая содержится в модуле keyword. Один из возможных способов сделать это показан ниже:


>>> from keyword import iskeyword
>>> iskeyword('and')
True

Если вы действительно хотите убедиться, что строка будет служить допустимым идентификатором Python, вы должны проверить, что .isidentifier() является истинным, а iskeyword() — ложным.

s.islower()

Определяет, являются ли буквенные символы целевой строки строчными.

s.islower() возвращает True, если s непусто и все содержащиеся в нем буквенные символы строчные, и False в противном случае. Неалфавитные символы игнорируются:


>>> 'abc'.islower()
True
>>> 'abc1$d'.islower()
True
>>> 'Abc1$D'.islower()
False

s.isprintable()

Определяет, состоит ли целевая строка полностью из печатаемых символов.

s.isprintable() возвращает True, если s пуст или все содержащиеся в нем буквенные символы доступны для печати. Он возвращает False, если s содержит хотя бы один непечатаемый символ. Неалфавитные символы игнорируются:


>>> 'a\tb'.isprintable()
False
>>> 'a b'.isprintable()
True
>>> ''.isprintable()
True
>>> 'a\nb'.isprintable()
False

Примечание: Только метод .isxxxx() возвращает True, если s является пустой строкой. Все остальные возвращают False для пустой строки.

s.isspace()

Определяет, состоит ли целевая строка из пробельных символов.

s.isspace() возвращает True, если s непусто и все символы являются пробелами, и False в противном случае.

Наиболее часто встречающимися пробелами являются пробел ‘ ‘, табуляция ‘\t‘ и новая строка ‘\n‘:


>>> ' \t \n '.isspace()
True
>>> '   a   '.isspace()
False

Однако есть несколько других символов ASCII, которые квалифицируются как пробелы, и если вы учитываете символы Unicode, то их довольно много:


>>> '\f\u2005\r'.isspace()
True

s.istitle()

Определяет, является ли целевая строка заголовком.

s.istitle() возвращает True, если s непусто, первый буквенный символ каждого слова прописной, а все остальные буквенные символы в каждом слове строчные. В противном случае он возвращает False:


>>> 'This Is A Title'.istitle()
True
>>> 'This is a title'.istitle()
False
>>> 'Give Me The #$#@ Ball!'.istitle()
True

Примечание: вот как документация Python описывает .istitle(), если вы находите это более интуитивно понятным: “заглавные символы могут следовать только за несокращенными символами, а строчные-только за прописными.”

s.isupper()

Определяет, являются ли буквенные символы целевой строки заглавными.

s.isupper() возвращает True, если s непусто и все содержащиеся в нем буквенные символы заглавные, и False в противном случае. Неалфавитные символы игнорируются:


>>> 'ABC'.isupper()
True
>>> 'ABC1$D'.isupper()
True
>>> 'Abc1$D'.isupper()
False

Форматирование Строк

Методы этой группы изменяют или улучшают формат строки.

s.center(<width>[, <fill>])

Центрирует строку в поле.

s.center(<width>) возвращает строку, состоящую из s, центрированных в поле width <width&gt;. По умолчанию заполнение состоит из символа пробела ASCII:


>>> 'foo'.center(10)
'   foo    '

Если указан необязательный аргумент <fill>, то он используется в качестве символа заполнения:


>>> 'bar'.center(10, '-')
'---bar----'

Если аргумент уже имеет длину не менее <width>, то он возвращается без изменений:


>>> 'foo'.center(2)
'foo'

s.expandtabs(tabsize=8)

Разворачивает столбцы в строку.

s.expandtabs() заменяет каждый символ табуляции (‘\t‘) пробелами. По умолчанию пробелы заполняются при условии остановки табуляции в каждом восьмом столбце:


>>> 'a\tb\tc'.expandtabs()
'a       b       c'
>>> 'aaa\tbbb\tc'.expandtabs()
'aaa     bbb     c'

tabsize является необязательным параметром, определяющим остановку колонны:


>>> 'a\tb\tc'.expandtabs(4)
'a   b   c'
>>> 'aaa\tbbb\tc'.expandtabs(tabsize=4)
'aaa bbb c'

s.ljust(<width>[, <fill>])

Левостороннее выравнивание строки в поле.

s.ljust(<width>) возвращает строку, состоящую из s, выровненных по левому краю в поле ширина <width>. По умолчанию заполнение состоит из символа пробела ASCII:


>>> 'foo'.ljust(10)
'foo       '

Если указан необязательный аргумент <fill>, то он используется в качестве символа заполнения:


>>> 'foo'.ljust(10, '-')
'foo-------'

Если s уже достигает ширины такой как <width>, то он возвращается без изменений:


>>> 'foo'.ljust(2)
'foo'

s.lstrip([<chars>])

Обрезает ведущие символы из строки.

s.lstrip() возвращает копию s с любыми пробелами, удаленными с левого конца:


>>> '   foo bar baz   '.lstrip()
'foo bar baz   '
>>> '\t\nfoo\t\nbar\t\nbaz'.lstrip()
'foo\t\nbar\t\nbaz'

Если указан необязательный аргумент <chars>, то это строка, указывающая набор удаляемых символов:


>>> 'http://www.realpython.com'.lstrip('/:pth')
'www.realpython.com'

s.replace(<old>, <new>[, <count>])

Заменяет вхождения подстроки в строке.

В Python для удаления символа из строки можно использовать метод string.replace(). Метод s.replace(<old>, <new>) возвращает копию s со всеми вхождениями подстроки <old>, замененной на <new>.:


>>> 'foo bar foo baz foo qux'.replace('foo', 'grault')
'grault bar grault baz grault qux'

Если указан необязательный аргумент <count>, то выполняется максимум замен <count>, начиная с левого конца s:


>>> 'foo bar foo baz foo qux'.replace('foo', 'grault', 2)
'grault bar grault baz foo qux'

s.rjust(<width>[, <fill>])

Правостороннее выравнивание строки в поле.

s.rjust(<width>) возвращает строку, состоящую из s, выровненных по правому краю в поле ширины <width>. По умолчанию заполнение состоит из символа пробела ASCII:


>>> 'foo'.rjust(10)
'       foo'

Если указан необязательный аргумент <fill>, то он используется в качестве символа заполнения:


>>> 'foo'.rjust(10, '-')
'-------foo'

Если s уже по крайней мере равен <width>, то он возвращается без изменений:


>>> 'foo'.rjust(2)
'foo'

s.rstrip([<chars>])

Обрезает конечные символы из строки.

s.rstrip() возвращает копию s с любыми пробелами, удаленными с правого конца:


>>> '   foo bar baz   '.rstrip()
'   foo bar baz'
>>> 'foo\t\nbar\t\nbaz\t\n'.rstrip()
'foo\t\nbar\t\nbaz'

Если указан необязательный аргумент <chars>, то это строка, указывающая набор удаляемых символов:


>>> 'foo.$$$;'.rstrip(';$.')
'foo'

s.strip([<chars>])

Удаляет символы с левого и правого концов строки.

s.strip() по существу эквивалентен вызову s.lstrip() и s.rstrip() последовательно. Без аргумента <chars> он удаляет начальные и конечные пробелы:


>>> s = '   foo bar baz\t\t\t'
>>> s = s.lstrip()
>>> s = s.rstrip()
>>> s
'foo bar baz'

Как и в случае с .lstrip() и .rstrip(), необязательный аргумент <chars> указывает набор удаляемых символов:


>>> 'www.realpython.com'.strip('w.moc')
'realpython'

Примечание: когда возвращаемое значение строкового метода является другой строкой, как это часто бывает, методы могут быть вызваны последовательно путем цепочки вызовов:


>>> '   foo bar baz\t\t\t'.lstrip().rstrip()
'foo bar baz'
>>> '   foo bar baz\t\t\t'.strip()
'foo bar baz'

>>> 'www.realpython.com'.lstrip('w.moc').rstrip('w.moc')
'realpython'
>>> 'www.realpython.com'.strip('w.moc')
'realpython'

s.zfill(<width>)

Подкладывает строку слева нулями.

s.zfill(<width>) возвращает копию s, заполненную слева символами ‘0‘ до указанной <width>:


>>> '42'.zfill(5)
'00042'

Если s содержит начальный знак, он остается на левом краю результирующей строки после вставки нулей:


>>> '+42'.zfill(8)
'+0000042'
>>> '-42'.zfill(8)
'-0000042'

Если s уже по крайней мере равен <width>, то он возвращается без изменений:


>>> '-42'.zfill(3)
'-42'

.zfill() наиболее полезен для строковых представлений чисел, но Python все равно будет обнулять строку, которая не является таковой.:


>>> 'foo'.zfill(6)
'000foo'

Преобразование между строками и списками

Методы в этой группе преобразуют между строкой и некоторым составным типом данных либо вставляя объекты вместе, чтобы сделать строку, либо разбивая строку на части.

Многие из этих методов возвращают либо список, либо кортеж. Это составные типы данных, которые являются прототипическими примерами итерируемые объекты в Python. Они описаны в следующем уроке, так что вы скоро узнаете о них! До тех пор просто думайте о них как о последовательностях значений. Список заключен в квадратные скобки ([]), а кортеж-в круглые скобки (()).

С этим введением давайте взглянем на эту последнюю группу строковых методов.

s.join(<iterable>)

Конкатенация строк из итерируемого объекта.

s.join(<iterable>) возвращает строку, полученную в результате объединения объектов в <iterable>, разделенных s.

Обратите внимание, что .join() вызывается на s, строке-разделителе. <iterable> также должна быть последовательностью строковых объектов.

Некоторые примеры кода должны помочь прояснить ситуацию. В следующем примере разделителями являются строки ‘,‘, а <iterable> — список строковых значений:


>>> ', '.join(['foo', 'bar', 'baz', 'qux'])
'foo, bar, baz, qux'

В результате получается одна строка, состоящая из объектов списка, разделенных запятыми.

В следующем примере <iterable> задается как одно строковое значение. Когда строковое значение используется в качестве итеративного, оно интерпретируется как список отдельных символов строки:


>>> list('corge')
['c', 'o', 'r', 'g', 'e']

>>> ':'.join('corge')
'c:o:r:g:e'

Таким образом, в результате ‘:.join('corge') получается строка, состоящая из каждого символа в ‘corge‘, разделенного ‘:‘.

Этот пример терпит неудачу, потому что один из объектов в <iterable> не является строкой:


>>> '---'.join(['foo', 23, 'bar'])
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    '---'.join(['foo', 23, 'bar'])
TypeError: sequence item 1: expected str instance, int found

Это можно исправить с помощью:


>>> '---'.join(['foo', str(23), 'bar'])
'foo---23---bar'

Скоро увидите, многие составные объекты в Python могут быть истолкованы как итеративные, и .join() особенно полезен для создания строк из них.

s.partition(<sep>)

Делит строку на основе разделителя.

s.partition(<sep>) разбивает s при первом вхождении строки <sep>. Возвращаемое значение представляет собой кортеж из трех частей, состоящий из:

  • Часть s, предшествующая <sep>
  • Сам <sep>
  • Часть s, следующая за <sep>

Вот несколько примеров .partition() в действии:


>>> 'foo.bar'.partition('.')
('foo', '.', 'bar')
>>> '[email protected]@[email protected]@baz'.partition('@@')
('foo', '@@', '[email protected]@baz')

Если <sep> не найден в s, возвращаемый кортеж содержит s, за которым следуют две пустые строки:


>>> 'foo.bar'.partition('@@')
('foo.bar', '', '')

s.rpartition(<sep>)

Делит строку на основе разделителя.

s.rpartition(<sep>) функционирует точно так же, как s.partition(<sep>), за исключением того, что s разделяется при последнем вхождении <sep> вместо первого вхождения:


>>> '[email protected]@[email protected]@baz'.partition('@@')
('foo', '@@', '[email protected]@baz')

>>> '[email protected]@[email protected]@baz'.rpartition('@@')
('[email protected]@bar', '@@', 'baz')

s.rsplit(sep=None, maxsplit=-1)

Разбивает строку на список подстрок.

Без аргументов s.split() разбивает s на подстроки, разделенные любой последовательностью пробелов, и возвращает подстроки в виде списка:


>>> 'foo bar baz qux'.rsplit()
['foo', 'bar', 'baz', 'qux']
>>> 'foo\n\tbar   baz\r\fqux'.rsplit()
['foo', 'bar', 'baz', 'qux']

Если указан <sep>, то он используется в качестве разделителя для разделения:


>>> 'foo.bar.baz.qux'.rsplit(sep='.')
['foo', 'bar', 'baz', 'qux']

(Если <sep> задано со значением None, строка разделяется пробелом, как если бы <sep> вообще не было задано.)

Когда <sep> явно задан в качестве разделителя, предполагается, что последовательные разделители в s разделяют пустые строки, которые будут возвращены:


>>> 'foo...bar'.rsplit(sep='.')
['foo', '', '', 'bar']

Однако это не тот случай, когда <sep> опущен. В этом случае последовательные пробелы объединяются в один разделитель, и результирующий список никогда не будет содержать пустых строк:


>>> 'foo\t\t\tbar'.rsplit()
['foo', 'bar']

Если указан необязательный параметр ключевого слова <maxsplit>, то выполняется максимум такое количество разбиений, начиная с правого конца s:


>>> 'www.realpython.com'.rsplit(sep='.', maxsplit=1)
['www.realpython', 'com']

Значение по умолчанию для <maxsplit> равно -1, что означает, что должны быть выполнены все возможные разбиения— так же, как если бы <maxsplit> был полностью опущен:


>>> 'www.realpython.com'.rsplit(sep='.', maxsplit=-1)
['www', 'realpython', 'com']
>>> 'www.realpython.com'.rsplit(sep='.')
['www', 'realpython', 'com']

s.split(sep=None, maxsplit=-1)

Разбивает строку на список подстрок.

s.split() ведет себя точно так же, как s.rsplit(), за исключением того, что если задано <maxsplit>, то разбиения отсчитываются с левого конца s, а не с правого:


>>> 'www.realpython.com'.split('.', maxsplit=1)
['www', 'realpython.com']
>>> 'www.realpython.com'.rsplit('.', maxsplit=1)
['www.realpython', 'com']

Если <maxsplit> не указан, то .split() и .rsplit() неразличимы.

s.splitlines([<keepends>])

Разрывает строку на границах линий.

s.splitlines() разбивает s на строки и возвращает их в виде спика. Любой из следующих символов или последовательностей символов считается границей линии:

Escape-символ Описание
\n Новая строка
\r Возврат к началу строки
\r\n Возврат к началу строки + заполнение
\v или \x0b Подведение Линии
\f или \x0c Перевод на следующий лист(Form Feed)
\x1c Разделение файлов
\x1d разделитель групп
\x1e разделитель записей
\x85 Следующая Строка (Контрольный Код C1)
\u2028 Разделитель Строк Unicode
\u2029 Разделитель Абзацев Unicode

Вот пример использования нескольких различных разделителей строк:


>>> 'foo\nbar\r\nbaz\fqux\u2028quux'.splitlines()
['foo', 'bar', 'baz', 'qux', 'quux']

Если в строке присутствуют последовательные символы границ строк, предполагается, что они разделяют пустые строки, которые появятся в списке результатов:


>>> 'foo\f\f\fbar'.splitlines()
['foo', '', '', 'bar']

Если необязательный аргумент <keepends> указан и является истинным, то границы строк сохраняются в результирующих строках:


>>> 'foo\nbar\nbaz\nqux'.splitlines(True)
['foo\n', 'bar\n', 'baz\n', 'qux']
>>> 'foo\nbar\nbaz\nqux'.splitlines(1)
['foo\n', 'bar\n', 'baz\n', 'qux']

Объекты

bytes

Объект bytes является одним из основных встроенных типов для манипулирования двоичными данными. Объект bytes — это неизменяемая последовательность однобайтовых значений. Каждый элемент в объекте bytes представляет собой небольшое целое число в диапазоне от 0 до 255.

Определение литерала объекта

bytes

Байтовый литерал определяется так же, как и строковый литерал с добавлением префикса ‘b‘ :


>>> b = b'foo bar baz'
>>> b
b'foo bar baz'
>>> type(b)
<class 'bytes'>

Как и в случае со строками, вы можете использовать любой из механизмов одинарного, двойного или тройного цитирования:


>>> b'Contains embedded "double" quotes'
b'Contains embedded "double" quotes'

>>> b"Contains embedded 'single' quotes"
b"Contains embedded 'single' quotes"

>>> b'''Contains embedded "double" and 'single' quotes'''
b'Contains embedded "double" and \'single\' quotes'

>>> b"""Contains embedded "double" and 'single' quotes"""
b'Contains embedded "double" and \'single\' quotes'

В байтовом литерале допускаются только символы ASCII. Любое символьное значение больше 127 должно быть указано с помощью соответствующей escape-последовательности:


>>> b = b'foo\xddbar'
>>> b
b'foo\xddbar'
>>> b[3]
221
>>> int(0xdd)
221

Префикс ‘r‘ может использоваться в байтовом литерале для отключения обработки escape-последовательностей, как и в случае со строками:


>>> b = rb'foo\xddbar'
>>> b
b'foo\\xddbar'
>>> b[3]
92
>>> chr(92)
'\\'

Определение объекта

bytes с помощью встроенной функции bytes()

Функция bytes() также создает объект bytes. Какой тип байтов возвращается объекту, зависит от аргумента(ов), переданного функции. Возможные формы приведены ниже.

bytes(<s>, <encoding>)

Создает объект bytes из строки.

bytes(<s>, <encoding>) преобразует строку <s> в объект bytes, используя str.encode() в соответствии с заданной <encoding>:


>>> b = bytes('foo.bar', 'utf8')
>>> b
b'foo.bar'
>>> type(b)
<class 'bytes'>

Техническое Примечание: В этой форме функции bytes() требуется аргумент <encoding>. «Кодирование» относится к способу перевода символов в целочисленные значения. Значение «utf 8» указывает на формат преобразования Unicode UTF-8, который является кодировкой, способной обрабатывать все возможные символы Unicode. UTF-8 также можно указать, указав «UTF8«, «utf-8» или «UTF-8» для <encoding>.

Дополнительные сведения см. В документации Unicode. До тех пор, пока вы имеете дело с обычными латинскими символами, UTF-8 будет хорошо служить вам.

bytes(<size>)

Создает объект bytes, состоящий из нулевых (0x00) байтов.

bytes(<size>) определяет объект bytes указанного <size>, который должен быть положительным целым числом. Результирующий объект bytes инициализируется нулевыми (0x00) байтами:


>>> b = bytes(8)
>>> b
b'\x00\x00\x00\x00\x00\x00\x00\x00'
>>> type(b)
<class 'bytes'>

bytes(<iterable>)

Создает объект bytes из итерируемого объекта.

bytes(<iterable>) определяет объект bytes из последовательности целых чисел, сгенерированных <iterable>. <iterable> должен быть итегрируемым, который генерирует последовательность целых чисел n в диапазоне 0 ≤ n ≤ 255:


>>> b = bytes([100, 102, 104, 106, 108])
>>> b
b'dfhjl'
>>> type(b)
<class 'bytes'>
>>> b[2]
104

Операции с байтовыми объектами

Как и строки, объекты bytes поддерживают общие операции последовательности:

  • Операторы in и not in:

>>> b = b'abcde'

>>> b'cd' in b
True
>>> b'foo' not in b
True
  • Операторы конкатенации (+) и репликации (*) :
  • 
    >>> b = b'abcde'
    
    >>> b + b'fghi'
    b'abcdefghi'
    >>> b * 3
    b'abcdeabcdeabcde'
    
  • Индексирование и нарезка:
  • 
    >>> b = b'abcde'
    
    >>> b[2]
    99
    >>> b[1:3]
    b'bc'
    
  • Встроенные функции:
  • 
    >>> len(b)
    5
    >>> min(b)
    97
    >>> max(b)
    101
    

    Многие методы, определенные для строковых объектов, допустимы и для байтовых объектов:

    
    >>> b = b'foo,bar,foo,baz,foo,qux'
    
    >>> b.count(b'foo')
    3
    
    >>> b.endswith(b'qux')
    True
    
    >>> b.find(b'baz')
    12
    
    >>> b.split(sep=b',')
    [b'foo', b'bar', b'foo', b'baz', b'foo', b'qux']
    
    >>> b.center(30, b'-')
    b'---foo,bar,foo,baz,foo,qux----'
    

    Обратите внимание, однако, что когда эти операторы и методы вызываются для объекта bytes, операнд и аргументы также должны быть объектами bytes:

    
    >>> b = b'foo.bar'
    
    >>> b + '.baz'
    Traceback (most recent call last):
      File "<pyshell#72>", line 1, in 
        b + '.baz'
    TypeError: can't concat bytes to str
    >>> b + b'.baz'
    b'foo.bar.baz'
    
    >>> b.split(sep='.')
    Traceback (most recent call last):
      File "<pyshell#74>", line 1, in 
        b.split(sep='.')
    TypeError: a bytes-like object is required, not 'str'
    >>> b.split(sep=b'.')
    [b'foo', b'bar']
    

    Хотя определение и представление байтового объекта основано на тексте ASCII, на самом деле он ведет себя как неизменяемая последовательность небольших целых чисел в диапазоне от 0 до 255 включительно. Вот почему один элемент из объекта bytes отображается как целое число:

    
    >>> b = b'foo\xddbar'
    >>> b[3]
    221
    >>> hex(b[3])
    '0xdd'
    >>> min(b)
    97
    >>> max(b)
    221
    

    Однако срез отображается как байтовый объект, даже если он имеет длину всего в один байт:

    
    >>> b[2:3]
    b'c'
    

    Вы можете преобразовать объект bytes в список целых чисел с помощью встроенной функции list()

    
    >>> list(b)
    [97, 98, 99, 100, 101]
    

    Шестнадцатеричные числа часто используются для указания двоичных данных, поскольку две шестнадцатеричные цифры непосредственно соответствуют одному байту. Класс bytes поддерживает два дополнительных метода, облегчающих преобразование в строку шестнадцатеричных цифр и обратно.

    bytes.fromhex(<s>)

    Возвращает объект bytes, построенный из строки шестнадцатеричных значений.

    bytes.fromhex(<s>) возвращает объект bytes, полученный в результате преобразования каждой пары шестнадцатеричных цифр в <s> в соответствующее значение байта. Шестнадцатеричные пары цифр в <s> могут быть дополнительно разделены пробелами, которые игнорируются:

    
    >>> b = bytes.fromhex(' aa 68 4682cc ')
    >>> b
    b'\xaahF\x82\xcc'
    >>> list(b)
    [170, 104, 70, 130, 204]
    

    Примечание: этот метод является методом класса, а не методом объекта. Он привязан к классу bytes, а не к объекту bytes. В следующих уроках по объектно-ориентированному программированию вы гораздо глубже изучите различие между классами, объектами и соответствующими им методами. А пока просто обратите внимание, что этот метод вызывается в классе bytes, а не в объекте b.

    b.hex()

    Возвращает строку, содержащую шестнадцатеричное значение из объекта в байтах.

    b.hex() возвращает результат преобразования байтов объекта b в строку шестнадцатеричных пар цифр. То есть он делает обратное .fromhex():

    
    >>> b = bytes.fromhex(' aa 68 4682cc ')
    >>> b
    b'\xaahF\x82\xcc'
    
    >>> b.hex()
    'aa684682cc'
    >>> type(b.hex())
    <class 'str'>
    

    Примечание: В отличие от .fromhex(), .hex() — это объектный метод, а не метод класса. Таким образом, он вызывается на объекте класса bytes, а не на самом классе.

    Объекты

    bytearray

    Python поддерживает другой тип двоичной последовательности, называемый bytearray. Объекты bytearray очень похожи на объекты bytes, несмотря на некоторые различия:

    • В Python нет специального синтаксиса для определения литерала байтового массива, такого как префикс ‘b‘, который может использоваться для определения объекта bytes. Объект bytearray всегда создается с помощью встроенной функции bytearray() :
    
    >>> ba = bytearray('foo.bar.baz', 'UTF-8')
    >>> ba
    bytearray(b'foo.bar.baz')
    
    >>> bytearray(6)
    bytearray(b'\x00\x00\x00\x00\x00\x00')
    
    >>> bytearray([100, 102, 104, 106, 108])
    bytearray(b'dfhjl')
    
  • Объекты bytearray изменчивы. Вы можете изменить содержимое объекта bytearray с помощью индексации и нарезки:
  • 
    >>> ba = bytearray('foo.bar.baz', 'UTF-8')
    >>> ba
    bytearray(b'foo.bar.baz')
    
    >>> ba[5] = 0xee
    >>> ba
    bytearray(b'foo.b\xeer.baz')
    
    >>> ba[8:11] = b'qux'
    >>> ba
    bytearray(b'foo.b\xeer.qux')
    

    Объект bytearray также может быть построен непосредственно из объекта bytes:

    
    >>> ba = bytearray(b'foo')
    >>> ba
    bytearray(b'foo')
    

    Вывод

    В этой учебной статье подробно рассматривается множество различных механизмов, предоставляемых Python для обработки строк, включая строковые операторы, встроенные функции, индексацию, нарезку и встроенные методы. Вы также познакомились с типами bytes и bytearray.

    Эти типы являются первыми типами, которые вы рассмотрели, которые являются составными-построенными из набора меньших частей. Python предоставляет несколько составных встроенных типов. В следующем уроке вы познакомитесь с двумя наиболее часто используемыми: списками и кортежами.

    Оригинал статьи: Strings and Character Data in Python

    Автор оригинальной статьи: John Sturtz

    Автор перевода: Кирилл Мартын-Назаров

    У меня есть строка, содержимое которой является именем функции, как ссылаться на соответствующую функцию в Python?

    Например, если у меня есть функция с именем add , например

    def add(x,y):
        return x+y
    

    и я хочу, чтобы у меня была возможность конвертировать строку или ввод в эту функцию, например

    w=raw_input('Please input the function you want to use')
    

    или

    w='add'
    

    Есть ли способ использовать w для ссылки на функцию add ?

    python

    string

    function

    string-evaluation

    Поделиться

    Источник


    Bob    

    10 октября 2011 в 22:37

    9 ответов


    • В JavaScript, как я могу ссылаться на кнопку, которая вызвала функцию?

      У меня есть таблица HTML. Одна из ячеек в каждой строке таблицы содержит кнопку. При нажатии на кнопку строка, содержащая эту кнопку, должна быть удалена из таблицы. Кнопка вызывает функцию removeItem при нажатии. <input type=button value=Remove onclick=removeItem() /> . function…

    • * является ли c++ именем функции?

      Просматривая документацию по исходному коду Genode, я наткнулся на функцию, имя которой начиналось со Звездочки ( * ), в частности, Hello::Session_component *_create_session(const char *args) Обычно я работаю в C, а не в C++, поэтому меня это немного смущает. Является ли это указателем на функцию…



    62

    Поскольку вы принимаете пользовательский ввод, самый безопасный способ-точно определить, что является допустимым вводом:

    dispatcher={'add':add}
    w='add'
    try:
        function=dispatcher[w]
    except KeyError:
        raise ValueError('invalid input')
    

    Если вы хотите оценить такие строки , как 'add(3,4)', вы можете использовать safe eval :

    eval('add(3,4)',{'__builtins__':None},dispatcher)
    

    eval в целом может быть опасным при применении к пользовательскому вводу. Вышесказанное безопаснее, так как __builtins__ отключен, а locals ограничен dispatcher . Кто-то более умный, чем я, мог бы все еще причинять неприятности, но я не могу сказать вам, как это сделать.

    WARNING: Даже eval(..., {'__builtins__':None}, dispatcher) небезопасно применять к пользовательскому вводу. Злоумышленник может запускать произвольные функции на вашем компьютере , если ему будет предоставлена возможность оценить его строку с помощью eval .

    Поделиться


    unutbu    

    10 октября 2011 в 22:40



    21

    Один из безопасных способов-сопоставление имен с функциями. Это безопаснее, чем использовать eval .

    function_mappings = {
            'add': add,
    }
    
    def select_function():
        while True:
            try:
                return function_mappings[raw_input('Please input the function you want to use')]
            except KeyError:
                print 'Invalid function, try again.'
    

    Поделиться


    Chris Morgan    

    10 октября 2011 в 22:43



    16

    Встроенная функция eval будет делать то, что вы хотите. Применяются все обычные предупреждения о выполнении произвольного пользовательского кода.

    Если существует конечное число предопределенных функций, вам следует избегать eval и вместо этого использовать таблицу поиска (т. е. Dict ). Никогда не доверяйте своим пользователям.

    Поделиться


    Oscar Korz    

    10 октября 2011 в 22:43



    12

    решение unutbu-это то, что я обычно использую, но для полноты картины:

    Если вы указываете точное имя функции, вы можете использовать eval , хотя это крайне не рекомендуется, потому что люди могут делать злонамеренные вещи:

    eval("add")(x,y)
    

    Поделиться


    Foo Bah    

    10 октября 2011 в 22:44



    12

    Просто используйте ссылку на функцию:

    def pwr(x, y):
        return x ** y
    
    def add(x, y):
        return x + y
    
    dispatcher = { 'pwr' : pwr, 'add' : add}
    
    def call_func(x, y, func):
        try:
            return dispatcher[func](x, y)
        except:
            return "Invalid function"
    
    call_func(2, 3, 'add')
    

    Просто и безопасно.

    Поделиться


    Jefferson Felix    

    21 июля 2018 в 12:40



    5

    Если вы реализуете приложение, подобное shell, в котором пользователь вводит некоторую команду (например, add), а ответы приложения (возвращают сумму), вы можете использовать модуль cmd , который обрабатывает все взаимодействия команд и диспетчеризацию для вас. Вот пример:

    #!/usr/bin/env python
    
    import cmd
    import shlex
    import sys
    
    class MyCmd(cmd.Cmd):
        def do_add(self, arguments):
            '''add - Adds two numbers the print the sum'''
            x, y = shlex.split(arguments)
            x, y = int(x), int(y)
            print x + y
    
        def do_quit(self, s):
            '''quit - quit the program'''
            sys.exit(0)
    
    if __name__ == '__main__':
        cmd = MyCmd()
        cmd.cmdloop('type help for a list of valid commands')
    

    Вот пример запущенного сеанса:

    $ python cmd_tryout.py
    введите справку для списка допустимых команд

    (Cmd) help add
    add — Добавляет два числа, чтобы вывести сумму

    (Cmd) добавить 5 3

    8
    (Cmd) выход

    В командной строке (Cmd) вы можете выполнить команду help , которую получите бесплатно. Другими командами являются add и quit , которые соответствуют функциям do_add() и do_quit() .

    Обратите внимание, что команда help отображает строку документа для вашей функции. Строка документа-это строка, непосредственно следующая за объявлением функции (см., например, do_add() ).

    Модуль cmd не выполняет никакого разбиения аргументов, разбора, поэтому вам придется сделать это самостоятельно. Функция do_add() иллюстрирует это.

    Этого примера программы должно быть достаточно, чтобы вы начали. Дополнительные сведения см. на странице справки cmd. Легко настроить приглашение и другие аспекты вашей программы.

    Поделиться


    Hai Vu    

    30 апреля 2013 в 15:49


    • В haskell как я могу ссылаться на код как на функцию

      В настоящее время у меня есть приложение, которое имеет меню, которое будет выполнять следующие функции: добавлять, удалять и просматривать. Что я хотел бы знать, так это как я могу ссылаться на код как на функцию. Код, на который я пытаюсь ссылаться, выглядит следующим образом: putStrLn Please…

    • Как ссылаться на переменные функции в JavaScript?

      Опытный python пользователь учится JavaScript. Допустим, я определяю функцию, которая принимает два аргумента: function alpha(var_a, var_b){ this.a = var_a; this.b = var_b; } А затем напишите образец объекта: function One(){ var a = [ [1], [2], [3] ]; var b = [ [4], [5], [6] ]; return new alpha(a,…



    3

    У меня была та же проблема.

    Я рекомендую вам создать временный файл Python для хранения функции, введенной пользователем. Вот пример, который я использовал в программе, которую я написал, чтобы нарисовать представления математических функций:

    with open("function.py",'w') as file:
        f=input('enter the function you want to draw example: 2*x+1 or e**x :\n')
        file.write("from math import *\ndef f(x):\n\treturn "+f)
    

    Это создаст файл, содержащий функцию, которую я хочу вызвать.

    Затем вы должны вызвать функцию, которую вы написали в файле, в свою программу:

    from function import f
    

    Теперь вы можете использовать свою функцию как обычную функцию python.

    Если вы хотите, вы также можете удалить файл, в котором вы сохранили свою функцию, используя os.remove:

    import os
    os.remove("function.py")
    

    Чтобы помочь вам понять, вот моя программа для рисования математических функций:

    import numpy
    import cv2
    import os
    from math import *
    
    
    def generate(f,a,b,min,max,functionname='noname'):
        ph=(b-a)/1920
        pv=(max-min)/1080
        picture=numpy.zeros((1080,1920))
        for i in range(0,1920):
            picture[1079-(int((f(a+(i+1)*ph)*1080/max))),i]=255
        for i in range(1920):
            picture[1079-(int((f(a+(i+1)*ph)*1080/max)))+1,i]=255
        cv2.imwrite(functionname+'.png',picture)
    
    
    with open("function.py",'w') as file:
        f=input('enter the function you want to draw example: or e**x :\n')
        file.write("from math import *\ndef f(x):\n\treturn "+f)
    
    from function import f
    os.remove("function.py")
    d=input('enter the interval ,min ,max and the image file name. Separate characters with spacebar. Example: 0 1 0 14 exponontielle :\n').split(" ")
    generate(f,int(d[0]),int(d[1]),int(d[2]),int(d[3]),d[4])
    

    Поделиться


    Zero Zero    

    25 июня 2019 в 14:04



    2

    У меня было много ситуаций, когда мне нужно было сравнить строку с int и наоборот в шаблоне Django.

    Я создал фильтр, который позволил мне передать имя функции и с помощью eval() преобразовать его.

    Пример:

    Шаблон:

    {% ifequal string int|convert:'str' %} do something {% endifequal %}
    

    Фильтр шаблона (где я использую строку для вызова имени функции):

    @register.filter
    def convert(value, funcname):
        try:
            converted = eval(funcname)(value)
            return converted
        except:
            return value
    

    Поделиться


    sidarcy    

    30 апреля 2013 в 15:04



    0

    [Я попал сюда с помощью дублирующего вопроса. Моей первой мыслью было использовать argparse и shlex , и я не видел этого здесь, поэтому я добавляю его как еще один вариант.]

    Вы можете использовать argparse для настройки реестра функций/команд и безопасного анализа их аргументов. Это также обеспечит некоторый уровень удобства для пользователя, например, сообщив вам, когда вы ввели команду, которой не существует.

    import argparse
    import shlex
    
    def hello(name):
        print('hello,', name)
    
    def main():
        parser = argparse.ArgumentParser()
        subparsers = parser.add_subparsers()
    
        hello_parser = subparsers.add_parser('hello')
        hello_parser.add_argument('name')
        hello_parser.set_defaults(func=hello)
    
        print('Enter q to quit')
    
        while True:
            command = input('command> ')
            command = command.strip()
    
            if not command:
                continue
    
            if command.lower() == 'q':
                break
    
            words = shlex.split(command)
    
            try:
                args = parser.parse_args(words)
            except SystemExit:
                # argparse will sys.exit() on -h and errors; prevent that
                continue
    
            func_args = {name: value for name, value in vars(args).items()}
            del func_args['func']
            args.func(**func_args)
    
    if __name__ == '__main__':
        try:
            main()
        except KeyboardInterrupt:
            print()
    

    Поделиться


    Unknown    

    29 октября 2017 в 00:46



    Похожие вопросы:

    Ссылка на консольную переменную Python в функции

    Я не уверен в правилах сферы действия Python. Если я использую консоль Python и определяю переменную, а затем импортирую модуль и вызываю функцию в этом модуле, есть ли способ ссылаться на…

    Java: как вызвать функцию, имя которой хранится в строковой переменной

    У меня есть общая строка, хранящаяся в переменной String func = validate; , и я хочу вызвать функцию с этим именем, то есть мне нужно вызвать функцию validate() . Я хочу сказать, что передам…

    Как запустить функцию, на которую у меня есть указатель в C++?

    Предположим, у меня есть указатель на функцию с именем foo . Как мне теперь запустить функцию, на которую это указывает?

    В JavaScript, как я могу ссылаться на кнопку, которая вызвала функцию?

    У меня есть таблица HTML. Одна из ячеек в каждой строке таблицы содержит кнопку. При нажатии на кнопку строка, содержащая эту кнопку, должна быть удалена из таблицы. Кнопка вызывает функцию…

    * является ли c++ именем функции?

    Просматривая документацию по исходному коду Genode, я наткнулся на функцию, имя которой начиналось со Звездочки ( * ), в частности, Hello::Session_component *_create_session(const char *args) Обычно…

    В haskell как я могу ссылаться на код как на функцию

    В настоящее время у меня есть приложение, которое имеет меню, которое будет выполнять следующие функции: добавлять, удалять и просматривать. Что я хотел бы знать, так это как я могу ссылаться на код…

    Как ссылаться на переменные функции в JavaScript?

    Опытный python пользователь учится JavaScript. Допустим, я определяю функцию, которая принимает два аргумента: function alpha(var_a, var_b){ this.a = var_a; this.b = var_b; } А затем напишите…

    Как определить функцию или кривую, соответствующую неизвестной функции с Python?

    У меня есть данные с 4 значениями X и одним общим значением Y для всех X. Y является функцией X (наблюдаемой из графиков), но значение функции неизвестно, что означает, что Y = f1(X1), Y = f2(X2), Y…

    Вызов функции JavaScript, имя которой сохраняется в строке

    Можно ли запустить функцию, имя которой сохраняется в строке? Например: у меня есть три функции: function nr1(p0, p1){ /* […] */ } function nr2(p0, p1){ /* […] */ } function nr3(p0, p1){ /*…

    Как проверить, является ли строка вызываемым именем в python?

    В моем проекте есть поле ввода(возвращает строку), поэтому я хочу проверить, является ли этот ввод именем вызываемой функции в python. Вот пример того, как выглядит мой код, но он не работает: n =…

    Переверните строку в Python — CodeRoad

    Мой собственный опыт в этом вопросе носит академический характер. Однако, если вы профессионал, ищущий быстрый ответ, используйте срез, который шагает по -1 :

    >>> 'a string'[::-1]
    'gnirts a'
    

    или более читабельно (но медленнее из-за поиска имен методов и того факта, что join формирует список при наличии итератора), str.join :

    >>> ''.join(reversed('a string'))
    'gnirts a'
    

    или для удобства чтения и повторного использования поместите срез в функцию

    def reversed_string(a_string):
        return a_string[::-1]
    

    и затем:

    >>> reversed_string('a_string')
    'gnirts_a'
    

    Более длинное объяснение

    Если вас интересует академическая экспозиция, пожалуйста, продолжайте читать.

    В объекте str Python нет встроенной обратной функции.

    Вот несколько вещей о строках Python, которые вы должны знать:

    1. В Python строки неизменяемы . Изменение строки не приводит к ее изменению. Он создает новый.

    2. Струны можно разрезать. Нарезка строки дает вам новую строку из одной точки строки, назад или вперед, в другую точку с заданным шагом. Они принимают нотацию среза или объект среза в подстрочном индексе:

      string[subscript]
      

    Подстрочный индекс создает срез, включая двоеточие в фигурные скобки:

        string[start:stop:step]
    

    Чтобы создать срез за пределами фигурных скобок, вам нужно будет создать объект среза:

        slice_obj = slice(start, stop, step)
        string[slice_obj]
    

    Читаемый подход:

    Хотя ''.join(reversed('foo')) читаем, он требует вызова строкового метода str.join для другой вызываемой функции, что может быть довольно относительно медленным. Давайте включим это в функцию — мы вернемся к этому:

    def reverse_string_readable_answer(string):
        return ''.join(reversed(string))
    

    Наиболее эффективный подход:

    Гораздо быстрее использовать обратный срез:

    'foo'[::-1]
    

    Но как мы можем сделать это более читабельным и понятным для кого-то, менее знакомого с фрагментами или намерениями оригинального автора? Давайте создадим объект среза вне обозначения индекса, дадим ему описательное имя и передадим его в обозначение индекса.

    start = stop = None
    step = -1
    reverse_slice = slice(start, stop, step)
    'foo'[reverse_slice]
    

    Реализовать как функцию

    Чтобы на самом деле реализовать это как функцию, я думаю, что семантически достаточно ясно просто использовать описательное имя:

    def reversed_string(a_string):
        return a_string[::-1]
    

    И использование просто:

    reversed_string('foo')
    

    Чего, вероятно, хочет ваш учитель:

    Если у вас есть инструктор, они, вероятно, хотят, чтобы вы начали с пустой строки и создали новую строку из старой. Вы можете сделать это с помощью чистого синтаксиса и литералов, используя while loop:

    def reverse_a_string_slowly(a_string):
        new_string = ''
        index = len(a_string)
        while index:
            index -= 1                    # index = index - 1
            new_string += a_string[index] # new_string = new_string + character
        return new_string
    

    Это теоретически плохо, потому что, помните , строки неизменяемы — поэтому каждый раз, когда кажется, что вы добавляете символ в свой new_string, теоретически каждый раз создается новая строка! Однако CPython знает, как оптимизировать это в определенных случаях, одним из которых является этот тривиальный случай.

    Наилучшая практика

    Теоретически лучше собрать ваши подстроки в список и присоединиться к ним позже:

    def reverse_a_string_more_slowly(a_string):
        new_strings = []
        index = len(a_string)
        while index:
            index -= 1                       
            new_strings.append(a_string[index])
        return ''.join(new_strings)
    

    Однако, как мы увидим в приведенных ниже таймингах для CPython, на самом деле это занимает больше времени, поскольку CPython может оптимизировать конкатенацию строк.

    Тайминги

    Вот тайминги:

    >>> a_string = 'amanaplanacanalpanama' * 10
    >>> min(timeit.repeat(lambda: reverse_string_readable_answer(a_string)))
    10.38789987564087
    >>> min(timeit.repeat(lambda: reversed_string(a_string)))
    0.6622700691223145
    >>> min(timeit.repeat(lambda: reverse_a_string_slowly(a_string)))
    25.756799936294556
    >>> min(timeit.repeat(lambda: reverse_a_string_more_slowly(a_string)))
    38.73570013046265
    

    CPython оптимизирует конкатенацию строк, в то время как другие реализации не могут :

    не

    полагаться на эффективную реализацию CPython конкатенации строк на месте для операторов в форме a += b или a = a + b .

    Эта оптимизация хрупка даже в CPython (она работает только для некоторых типов) и вообще отсутствует в реализациях, которые не используют пересчет. В чувствительных к производительности частях библиотеки вместо этого следует использовать форму «.join()». Это гарантирует, что конкатенация происходит в линейном времени в различных реализациях.

    Строковые функции Python | Различные строковые функции с их примерами

    Вступление

    В этой статье мы рассмотрим, как часто используются строковые функции Python.

    Python состоит из пяти основных типов данных, а именно:

    • Числовой (подтипы которых — int, long, float и complex)
    • строка
    • Список
    • Кортеж
    • Словарь

    Например

    str1 = 'Hello from EduCBA'
    OR
    Str2 = “Hello from EduCBA”

    Замечания:

    В отличие от Java или C ++, при объявлении переменной не нужно указывать тип данных. Можно напрямую присвоить значение переменной.

    В этой статье мы подробнее рассмотрим тип данных String и его функции.

    Одинарные и двойные кавычки используются при назначении строкового значения переменной.

    Строковые функции Python

    1. capitalize (): преобразует начальную букву строки в верхний регистр.

    Пример:

    str1 = “hello from EduCBA”
    str2 = str1.capitalize()
    print(str2)

    Выход :

    Привет из EduCBA

    2. casefold (): преобразует всю строку в нижний регистр.

    Пример:

    str1 = “HELLO FROM EduCBA”
    str2 = str1.casefold()
    print(str2)

    Выход:

    Привет от Educba

    3. center (): выравнивает строку по центру указанной длины.

    Пример:

    str1 = “EduCBA”
    str2 = str1.center(10)
    print(str2)

    Выход:

    EduCBA

    То есть два пробела слева остаются пустыми, за ними следуют шесть символов строки и еще два пустых символа справа, что в сумме составляет десять символов.

    4. count (): возвращает количество раз, когда подстрока встречается в данной строке.

    Пример:

    str1 = “Hello from EduCBA. Welcomw to EduCBA”
    num = str1.count(“EduCBA”)
    print(str2)

    Выход:

    2

    5. encode (): преобразует строку в ее закодированную версию.

    Пример:

    str1 = “EduCBA”
    str2 = str1.encode()
    print(“Hello from”, str2)

    Выход:

    Привет от vfg / 7hyt / 4

    6. endwith (): возвращает true, если заданная строка заканчивается указанной подстрокой.

    Пример:

    str1 = “Hello from EduCBA”
    str2 = str1.endswith(“CBA”)
    print(str2)

    Выход:

    правда

    7. expandtabs (): заменяет размер вкладки на заданные числовые пробелы. Размер вкладки по умолчанию составляет 8 символов.

    Пример:

    str1 = “Hello\tfrom\tEduCBA”
    str2 = str1.expandtabs(2)
    print(str2)

    Выход:

    Привет из EduCBA

    8. find (): Выполняет поиск в основной строке слева указанной подстроки и возвращает ее положение в найденном совпадении, если не возвращает -1, если совпадение не найдено.

    Пример:

    str1 = “Hello from EduCBA”
    str2 = str1.find(“EduCBA”)
    print(str2)

    Выход:

    11

    9. format (): помогает форматировать строку, используя заполнители.

    Пример:

    str1 = “EduCBA”
    print("Hello from ().".format(str1))

    Выход:

    Привет из EduCBA.

    10. index (): Находит позицию вхождения подстроки путем поиска в основной строке указанной подстроки и возвращает ее положение в пределах совпадения, если не выдает ошибку.

    Пример:

    str1 = “Hello from EduCBA”
    str2 = str1.index(“EduCBA”)
    print(str2)

    Выход :

    11

    11. isalnum (): Определяет, являются ли все символы в данной строке буквенно-цифровыми символами, состоящими только из букв и цифр. Если yes, то возвращает true, иначе возвращает false. Если между ними есть пробел, возвращается false.

    Пример:

    str1 = “EduCBA123”
    str2 = str1.isalnum()
    print(str2)

    Выход:

    Правда

    12. isalpha (): Определяет, являются ли все символы в данной строке алфавитами. Если да, верните true, иначе верните false. Если между ними есть пробел, возвращается false.

    Пример:

    str1 = “HellofromEduCBA”
    str2 = str1.isalpha()
    print(str2)

    Выход:

    Правда

    13. isdecimal (): Определяет, являются ли все символы в данной строке десятичными. Если yes, то возвращает true, иначе возвращает false. Если между ними есть пробел, возвращается false.

    Пример:

    str1 = “123456”
    str2 = str1.isdecimal()
    print(str2)

    Выход:

    Правда

    14. isidentifier (): Определяет, является ли строка допустимым идентификатором. Если yes, то возвращает true, иначе возвращает false. Если между ними есть пробел, возвращается false.

    Пример 1:

    str1 = “EduCBA123”
    str2 = str1.isidentifier()
    print(str2)

    Выход:

    Правда

    Пример 2:

    str1 = “EduCBA 123”
    str2 = str1.isidentifier()
    print(str2)

    Выход:

    Ложь

    15. islower (): Определяет, все ли символы в данной строке в нижнем регистре. Если yes, то возвращает true, иначе возвращает false.

    Пример:

    str1 = “EduCBA”
    str2 = str1.islower()
    print(str2)

    Выход:

    Ложь

    16. isnumeric (): Определяет, являются ли все символы в данной строке числовыми, то есть числами и показателями, которые могут быть в дробях. Если да, то возвращает true, иначе возвращает false.

    Пример:

    str1 = “123”
    str2 = str1.isnumeric()
    print(str2)

    Выход:

    Правда

    17. isprintable (): Определяет, являются ли все символы в данной строке печатными или нет. Если yes, то возвращает true, иначе возвращает false. Такие символы, как «\ t» или «\ n», не могут быть напечатаны.

    Пример 1:

    str1 = “EduCBA123”
    str2 = str1.isprintable()
    print(str2)

    Выход: правда

    Пример 2:

    str1 = “\tEduCBA123”
    str2 = str1.isprintable()
    print(str2)

    Выход:

    Ложь

    18. isspace (): Определяет, являются ли все символы в данной строке пробелами. Если yes, то возвращает true, иначе возвращает false.

    Пример:

    str1 = “ “
    str2 = str1.isspace ()
    print(str2)

    Выход:

    Правда

    19. istitle (): определяет, следует ли строка за набором правил, чтобы быть квалифицированным как заголовок. Если yes, то возвращает true, иначе возвращает false.

    Пример:

    str1 = “Hello From Educba”
    str2 = str1.istitle()
    print(str2)

    Выход:

    Правда

    20. isupper (): Определяет, все ли символы в данной строке в верхнем регистре. Если yes, то возвращает true, иначе возвращает false.

    Пример:

    str1 = “HELLO FROM EDUCBA”
    str2 = str1.isupper()
    print(str2)

    Выход:

    Правда

    21. join (): предназначен для объединения двух строк в итеративной форме.

    Пример:

    str1 = “Hello”
    str2 = str1.join(“EduCBA”)
    print(str2)

    Выход:

    HelloEHellodHellouHelloCHelloBHelloA

    22. lower (): предназначен для преобразования всей строки в нижний регистр.

    Пример:

    str1 = “Hello from EduCBA.”
    str2 = str1.lower()
    print(str2)

    Выход:

    Привет из воспитания.

    23. upper (): предназначен для преобразования всей строки в верхний регистр.

    Пример:

    str1 = “Hello from EduCBA”
    str2 = str1.upper()
    print(str2)

    Выход:

    ПРИВЕТ ОТ EDUCBA

    24. replace (): означает заменить подстроку на другую.

    Пример:

    str1 = “Hello from EduCBA!”
    str2 = str1.replace(“ from”, ” there”)
    print(str2)

    Выход:

    Привет, EduCBA!

    Заключение — Строковые функции Python

    Это несколько важных строковых функций, которые обычно используются. Использование этих методов облегчает и ускоряет разработку кода при работе со строками.

    Рекомендуемые статьи

    Это было руководство по функциям Python String. Здесь мы обсудили введение и важные функции Python String. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше —

    1. Что такое Python
    2. Функции строки улья
    3. Команды Python
    4. Строковые функции VBScript
    5. Python Frameworks | обзор

    Все основные строковые функции в Python: виды, примеры и таблица

    Python предоставляет множество встроенных функций для управления строками. Python String неизменяем, поэтому все эти функции возвращают новую строку, а исходная строка остается неизменной.

    Есть много функций для работы со строкой. Однако запомнить их все нереально. Итак, здесь я делю их на разные категории:

    • Обязательные строковые функции;
    • Дополнительные строковые функции;
    • Разные строковые функции;
    • Встроенные функции, работающие со строкой;
    • Полезные.

    Обязательные строковые функции

    format() Он используется для создания форматированной строки из строки шаблона и предоставленных значений.
    split() Функция string split() используется для разделения строки на список строк на основе разделителя.
    join() Эта функция возвращает новую строку, которая является конкатенацией строк в итерируемом объекте со строковым объектом в качестве разделителя.
    strip() Используется для удаления пробелов в строковом объекте.
    format_map() Функция string format_map() возвращает отформатированную версию строки с использованием подстановок из предоставленного сопоставления.
    upper() Мы можем преобразовать строку в верхний регистр в Python с помощью функции str.upper().
    lower() Эта функция создает новую строку в нижнем регистре.
    replace() Функция string replace() используется для создания новой строки путем замены некоторых частей другой строки.
    find() Метод String find() используется для поиска индекса подстроки в строке.
    translate() Функция String translate() возвращает новую строку, в которой каждый символ в строке заменяется с использованием данной таблицы перевода.

    Дополнительные строковые функции

    encode() Функция string encode() используется для кодирования строки с использованием предоставленной кодировки.
    count() Функция String count() возвращает количество вхождений подстроки в заданной строке.
    startwith() Функция startwith() возвращает True, если строка начинается с заданного префикса, в противном случае возвращает False.
    stringndswith() Функция stringndswith() возвращает True, если строка заканчивается заданным суффиксом, в противном случае возвращает False.
    capitalize() Функция String capitalize() возвращает версию строки с заглавной буквы.
    center() Функция string center() возвращает центрированную строку указанного размера.
    casefold() Функция casefold() строки в Python возвращает копию строки в развернутом виде. Эта функция используется для сравнения строк без учета регистра.
    expandtabs() Функция Python string expandtabs() возвращает новую строку, в которой символы табуляции (\t) заменены одним или несколькими пробелами.
    index() Функция String index() возвращает наименьший индекс, в котором находится указанная подстрока.
    __contains__() Класс String имеет функцию __contains __(), которую мы можем использовать, чтобы проверить, содержит ли он другую строку или нет. Мы также можем использовать оператор «in» для выполнения этой проверки.

    Разные строковые функции

    isalnum() Функция isalnum() Python возвращает True, если она состоит только из буквенно-цифровых символов.
    isalpha() Функция String isalpha() возвращает True, если все символы в строке являются алфавитными, в противном случае – False.
    isdecimal() Функция String isdecimal() возвращает True, если все символы в строке являются десятичными символами, в противном случае – False.
    isdigit() Функция String isdigit() возвращает True, если все символы в строке являются цифрами, в противном случае – False.
    isidentifier() Функция String isidentifier() возвращает True, если строка является допустимым идентификатором в соответствии с определением языка Python.
    islower() Python String islower() возвращает True, если все символы в регистре в строке строчные и есть хотя бы один регистр, в противном случае он возвращает False.
    isnumeric() Функция String isnumeric() возвращает True, если все символы в строке числовые, в противном случае – False. Если строка пуста, эта функция возвращает False.
    isprintable() Функция String isprintable() возвращает True, если все символы в строке печатаются или строка пуста, в противном случае – False.
    isspace() Функция Python isspace() возвращает True, если в строке есть только пробельные символы, в противном случае она возвращает False.
    список() Python String istitle() возвращает True, если строка заключена в заголовок и не пуста, в противном случае возвращается False.
    isupper() Функция String isupper() возвращает True, если все символы в регистре находятся в верхнем регистре.
    rjust(), ljust() Служебные функции для создания новой строки указанной длины из исходной строки с выравниванием по правому и левому краю.
    swapcase() Функция String swapcase() возвращает новую строку с символами верхнего регистра, преобразованными в нижний регистр и наоборот.
    partition() Функция String partition() разбивает строку на основе разделителя на кортеж из трех строк.
    splitlines() Функция String splitlines() возвращает список строк в строке.
    title() Функция String title() возвращает версию строки в заголовке.
    zfill() Функция String zfill (width) возвращает новую строку указанной ширины. Строка заполняется 0 с левой стороны для создания указанной ширины.

    Встроенные функции, работающие со строкой

    len() Длина строки может быть определена с помощью встроенной функции len().
    ascii() Функция ascii() возвращает строковое представление объекта. Эта функция внутренне вызывает функцию repr() и перед возвратом строки представления экранирует символы, отличные от ASCII, с помощью экранирования \x, \u или \U.
    bool() Функция bool() возвращает логическое значение для объекта. У класса bool всего два экземпляра – True и False.
    bytearray() Функция bytearray() возвращает объект bytearray, содержащий массив байтов из источника ввода.
    bytes() Эта функция возвращает объект байтов, который представляет собой неизменяемую последовательность целых чисел в диапазоне 0 <= x <256.
    ord() Функция ord() принимает строковый аргумент из одного символа Unicode и возвращает его целочисленное значение кодовой точки Unicode.
    enumerate() Функция перечисления принимает последовательность, а затем превращает каждый элемент последовательности в кортеж.
    float() Как следует из названия, функция python float() возвращает число с плавающей запятой из входного аргумента.
    hash() Эта функция возвращает хеш-значение данного объекта.
    id() Функция id() возвращает «идентичность» объекта. Идентификатор объекта – это целое число, которое гарантированно является уникальным и постоянным для этого объекта в течение его времени жизни.
    int() Функция int() возвращает целочисленный объект из указанного ввода. Возвращаемый объект int всегда будет в базе 10.
    map() Функция map() используется для применения функции ко всем элементам указанного итерируемого и возвращаемого объекта карты.
    print() Функция print() используется для вывода данных в консоль.
    slice() Функция slice() возвращает объект среза, представляющий набор индексов, заданных диапазоном (start, stop, step).
    type() Эта функция возвращает тип объекта.

    Полезные строковые операции

    • f-string в Python – новый и лучший способ форматирования строки, представленный в Python 3.6.
    • Подстрока в Python.
    • Создать случайную строку.
    • Строковый модуль в Python.
    • Необработанная строка.
    • Многострочная строка.
    • Проверка равенства строк.
    • Сравнение строк.
    • Конкатенация строк.
    • Нарезка строки.
    • Перевернуть строку.
    • Строка для datetime – strptime().
    • Преобразовать String в int.
    • Преобразовать строку в байты.
    • Преобразовать String в float.
    • Преобразовать список в строку.
    • Класс шаблона строки.
    • Проверить, является ли переменная String.
    • Объединить строку и int.
    • Удалить символ из строки.
    • Как добавить строки.
    • Найти строку в списке.
    • Удалить пробелы из строки.

    Нужно ли их все запоминать?

    Никто не может вспомнить их всех. Вы всегда можете найти их в своей IDE. Изображение ниже из моего файла PyCharm IDE builtins.py.

    ( Пока оценок нет )

    Помогаю в изучении Питона на примерах. Автор практических задач с детальным разбором их решений.

    string — Общие строковые операции

    Строковые константы

    Константы, определенные в этом модуле:

    string.ascii_letters

    Объединение констант ascii_lowercase и ascii_uppercase
    описано ниже._`{|}~.

    string.printable

    Строка символов ASCII, которые считаются печатаемыми. Комбинация
    digits, ascii_letters, punctuation и
    whitespace.

    string.whitespace

    Строка, содержащая все символы ASCII, считающиеся пробелами. Включает в
    себя пространство символов, табуляцию, перевод строки, возврат, перевод
    страницы и вертикальную табуляцию.

    Пользовательское форматирование строк

    Встроенный строковый класс предоставляет возможность выполнять сложные
    подстановки переменных и форматирование значений с помощью метода
    format(), описанного в PEP 3101. Класс Formatter в
    модуле string позволяет создавать и настраивать собственное поведение
    форматирования строк, используя ту же реализацию, что и встроенный метод
    format().

    class string.Formatter

    У класса Formatter есть следующие общедоступные методы:

    format(format_string, /, *args, **kwargs)

    Основной метод API. Он принимает строку формата и произвольный множество
    позиционных и ключевых аргументов. Является простой оболочкой, которая
    вызывает vformat().

    vformat(format_string, args, kwargs)

    Данная функция выполняет фактическую работу по форматированию. Она
    представлена как отдельная функция для случаев, когда вы хотите передать
    предопределенный словарь аргументов, а не распаковывать и переупаковывать
    словарь как отдельные аргументы с использованием синтаксиса *args и
    **kwargs. vformat() выполняет работу по разбиению строки
    формата на символьные данные и поля замены. Она вызывает различные методы,
    описанные ниже.

    Кроме того, Formatter определяет ряд методов, которые предназначены
    для замены подклассами:

    parse(format_string)

    Перебрать строку format_string и вернуть итерацию кортежей
    (literal_text, field_name, format_spec, conversion).
    Используется vformat(), чтобы разбить строку на литеральный текст
    или поля замены.

    Значения в кортеже концептуально представляют собой диапазон литерального
    текста, за которым следует одно поле замены. Если литерального текста нет
    (что может произойти, если два поля замены встречаются последовательно),
    то literal_text будет строкой нулевой длины. Если поле замены
    отсутствует, значения field_name, format_spec и conversion будут
    None.

    get_field(field_name, args, kwargs)

    Учитывая, что field_name возвращается parse() (см. выше),
    преобразовывает его в объект для форматирования. Возвращает кортеж (obj,
    used_key). Версия по умолчанию принимает строки формы, определенной в
    PEP 3101, например «0[name]» или «label.title». args и kwargs
    переданы в vformat(). У возвращаемого значения used_key то же
    значение, что и параметр key для get_value().

    get_value(key, args, kwargs)

    Получить заданное значение поля. Аргумент key может быть целым числом
    или строкой. Если это целое число, оно представляет индекс позиционного
    аргумента в args; если это строка, то она представляет именованный
    аргумент в kwargs.

    Параметр args установлен в список позиционных аргументов
    vformat(), а параметр kwargs установлен в словарь ключевых
    аргументов.

    Для составных имён полей эти функции вызываются только для первого
    компонента имени поля; последующие компоненты обрабатываются с помощью
    обычных операций с атрибутами и индексации.

    Так, например, выражение поля «0.name» вызовет get_value() с
    аргументом key, равным 0. Атрибут name будет найден после возврата
    get_value() путём вызова встроенной функции getattr().

    Если индекс или ключевое слово относятся к несуществующему элементу,
    следует поднять IndexError или KeyError.

    check_unused_args(used_args, args, kwargs)

    При желании выполнить проверку неиспользуемых аргументов. Аргументы этой
    функции — это множество всех ключей аргументов, которые фактически
    упоминались в строке формата (целые числа для позиционных аргументов и
    строки для именованных аргументов), а также ссылка на args и kwargs,
    переданная в vformat. Набор неиспользуемых аргументов может
    рассчитываться по этим параметрам. Предполагается, что
    check_unused_args() вызывает исключение в случае неудачной
    проверки.

    format_field(value, format_spec)

    format_field() просто вызывает глобальную встроенную
    format(). Метод предоставляется таким образом, чтобы подклассы
    могли его переопределить.

    convert_field(value, conversion)

    Преобразует значение (возвращаемое get_field()) с заданным типом
    преобразования (как в кортеже, возвращаемом методом parse()).
    Версия по умолчанию поддерживает типы преобразования «s» (str), «r»
    (repr) и «a» (ascii).

    Синтаксис строки формата

    Метод str.format() и класс Formatter используют один и тот же
    синтаксис для строк формата (хотя в случае Formatter подклассы могут
    определять свой синтаксис строки формата). Синтаксис похож на
    форматированные строковые литералы, но есть отличия.

    Строки формата содержат «замещающие поля», заключенные в фигурные скобки
    {}. Всё, что не заключено в фигурные скобки, считается литеральным текстом,
    который копируется в вывод без изменений. Если вам нужно включить фигурную
    скобку в литеральный текст, её можно экранировать, удвоив: {{ и }}.

    Грамматика для поля замены следующая:

    В менее формальных терминах поле замены может начинаться с field_name,
    который указывает объект, значение которого должно быть отформатировано и
    вставлено в вывод вместо поля замены. За field_name необязательно следует
    поле conversion, которому предшествует восклицательный знак '!', и
    format_spec, которому предшествует двоеточие ':'. Они указывают
    нестандартный формат для значения замены.

    См. также раздел Спецификация формата Мини-языка.

    Сам field_name начинается с arg_name, который является числом или ключевым
    словом. Если это число, оно относится к позиционному аргументу, а если это
    ключевое слово, оно относится к именованному ключевому аргументу. Если
    числовые arg_names в строке формата — это 0, 1, 2, … в последовательности,
    они все могут быть пропущены (а не только некоторые), и числа 0, 1, 2, … будут
    автоматически вставлены в этом порядке. . Поскольку arg_name не разделён
    кавычками, невозможно указать произвольные ключи словаря (например, строки
    '10' или ':-]') в строке формата. За arg_name может следовать любое
    количество выражений индекса или атрибута. Выражение формы '.name' выбирает
    именованный атрибут с помощью getattr(), а выражение формы '[index]'
    выполняет поиск по индексу с использованием __getitem__().

    Изменено в версии 3.1: Спецификаторы позиционного аргумента для str.format() можно не
    указывать, поэтому '{} {}'.format(a, b) эквивалентен '{0}
    {1}'.format(a, b)
    .

    Изменено в версии 3.4: Спецификаторы позиционного аргумента можно пропустить для
    Formatter.

    Примеры простых форматных строк:

    "Сначала посчитай до {0}"         # Ссылки на первый позиционный аргумент
    "Принеси мне {}"                  # Неявно ссылается на первый позиционный аргумент
    "От {} до {}"                     # То же, что "От {0} до {1}"
    "Мой квест {name}"                # Ссылка на ключевой аргумент «name»
    "Масса в тоннах {0.weight}"       # атрибут «weight» первого позиционного аргумента
    "Уничтожено единиц: {players[0]}" # Первый элемент ключевого аргумента «players».
    

    Поле conversion вызывает приведение типа перед форматированием. Обычно
    форматирование значения выполняется методом __format__() самого значения.
    Однако в некоторых случаях желательно принудительно форматировать тип как
    строку, переопределяя собственное определение форматирования. Преобразуя
    значение в строку перед вызовом __format__(), обычная логика
    форматирования игнорируется.

    В настоящее время поддерживаются три флага преобразования: '!s', который
    вызывает str() по значению, '!r', который вызывает repr(), и
    '!a', который вызывает ascii().

    Несколько примеров:

    "Гарольд умный {0!s}"            # Сначала вызывает str() для первого аргумента
    "Принесите святую {name!r}"      # Сначала вызывает repr() для первого аргумента
    "Больше {!a}"                    # Сначала вызывает ascii() для первого аргумента
    

    Поле format_spec содержит спецификацию того, как должно быть представлено
    значение, включая такие детали, как ширина поля, выравнивание, заполнение,
    десятичная точность и т. д. Каждый тип значения может определять свой
    собственный «мини-язык форматирования» или интерпретацию format_spec.

    Большинство встроенных типов поддерживают общий мини-язык форматирования,
    который описывается в следующем разделе.

    Поле format_spec может также включать в себя вложенные поля замены. Эти
    вложенные поля замены могут содержать имя поля, флаг преобразования и
    спецификацию формата, но более глубокое вложение не допускается. Поля замены
    внутри format_spec заменяются до интерпретации строки format_spec. Это
    позволяет динамически указывать форматирование значения.

    См. несколько примеров в разделе Примеры форматов.

    Спецификация формата Мини-языка

    «Спецификации формата» используются в полях замены, содержащихся в строке
    формата, для определения того, как представлены отдельные значения (см.
    Синтаксис строки формата и Форматированные строковые литералы). Их также можно передать напрямую
    встроенной функции format()
    sign ::= «+» | «-» | » »
    width ::= digit+
    grouping_option ::= «_» | «,»
    precision ::= digit+
    type ::= «b» | «c» | «d» | «e» | «E» | «f» | «F» | «g» | «G» | «n» | «o» | «s» | «x» | «X» | «%»

    Если указано допустимое значение align, ему может предшествовать символ
    fill, который может быть любым символом и по умолчанию использовать пробел,
    если он не указан. Невозможно использовать литеральную фигурную скобку («{»
    или «}») в качестве символа fill в
    форматированном строковом литерале или при использовании
    метода str.format(). Однако можно
    вставить фигурную скобку с вложенным полем замены. Это ограничение не влияет на
    функцию format().

    Смысл различных вариантов выравнивания следующий:

    Опция Значение
    '<' Заставляет поле выравниваться по левому краю в пределах доступного
    пространства (это значение по умолчанию для большинства объектов).’
    Принудительное центрирование поля в пределах
    доступного пространства.

    Обратите внимание, что, если не определена минимальная ширина поля, ширина поля
    всегда будет того же размера, что и данные для его заполнения, поэтому параметр
    выравнивания в этом случае не имеет значения.

    Параметр sign действителен только для числовых типов и может быть одним из
    следующих:

    Опция Значение
    '+' указывает, что знак должен использоваться как для
    положительных, так и для отрицательных чисел.
    '-' указывает, что знак должен использоваться только для
    отрицательных чисел (это поведение по умолчанию).
    пробел указывает, что ведущий пробел должен использоваться на
    положительных числах, а знак минус на отрицательных числах.

    Опция '#' приводит к тому, что для преобразования используется
    «альтернативная форма». Альтернативная форма определяется по-разному для разных типов.
    Эта опция действительна только для целых, плавающих и сложных типов. Для целых
    чисел, когда используется двоичный, восьмеричный или шестнадцатеричный вывод,
    эта опция добавляет к выходному значению соответствующий префикс '0b',
    '0o' или '0x'. Для чисел с плавающей запятой и сложных альтернативная
    форма приводит к тому, что результат преобразования всегда содержит десятичный
    знак, даже если за ним не следуют никакие цифры. Обычно десятичный знак
    появляется в результате этих преобразований, только если за ним следует цифра.
    Кроме того, для преобразований 'g' и 'G' конечные нули не удаляются из
    результата.

    Опция ',' сигнализирует об использовании запятой для разделителя тысяч. Для
    разделителя с учётом языкового стандарта использовать вместо него целочисленный
    тип представления 'n'.

    Изменено в версии 3.1: Добавлен параметр ',' (см. также PEP 378).

    Параметр '_' сигнализирует об использовании символа подчеркивания для
    разделителя тысяч для типов представления с плавающей запятой и для
    целочисленного типа представления 'd'. Для целочисленных типов
    представления 'b', 'o', 'x' и 'X' символы подчеркивания
    вставляются каждые 4 цифры. Для других типов представлений указание этой опции
    является ошибкой.

    Изменено в версии 3.6: Добавлен параметр '_' (см. также PEP 515).

    width — десятичное целое число, определяющее минимальную общую ширину поля,
    включая любые префиксы, разделители и другие символы форматирования. Если не
    указан, то ширина поля будет определяться содержимым.

    Если явное выравнивание не задано, то перед полем width нулевым ('0')
    символом включается знаковое заполнение нулями для числовых типов. Это
    эквивалентно fill символу '0' с типом alignment '='.

    precision — это десятичное число, указывающее, сколько цифр должно
    отображаться после десятичной точки для значения с плавающей запятой,
    отформатированного с помощью 'f' и 'F', или до и после десятичной точки
    для значения с плавающей запятой, отформатированного с помощью 'g' или
    'G'. Для нечисловых типов поле указывает максимальный размер поля —
    другими словами, сколько символов будет использовано из содержимого поля.
    precision не допускается для целочисленных значений.

    Наконец, type определяет, как данные должны быть представлены.

    Доступные типы представления строк:

    Тип Значение
    's' Строковый формат. Является типом по умолчанию
    для строки и может быть пропущен.
    None То же, что и 's'.

    Доступные целочисленные типы представления:

    Тип Значение
    'b' Двоичный формат. Выводит число по основанию 2.
    'c' Символ. Преобразует целое число в соответствующее символ
    Юникода перед печатью.
    'd' Десятичное целое число. Выводит число по основанию 10.
    'o' Октальный формат. Выводит число по основанию 8.
    'x' Шестнадцатеричный формат. Выводит число по основанию 16,
    используя строчные буквы для цифр больше 9.
    'X' Шестнадцатеричный формат. Выводит число по основанию 16,
    используя прописные буквы для цифр выше 9.
    'n' Число. Это то же самое, что и 'd', за исключением того, что для
    вставки соответствующих символов-разделителей номеров
    используется текущий параметр локали.
    None То же, что и 'd'.

    В дополнение к вышеуказанным типам представления, целые числа могут быть
    отформатированы с помощью типов представления с плавающей запятой,
    перечисленных ниже (кроме 'n' и None). При этом float()
    используется для преобразования целого числа в число с плавающей запятой перед
    форматированием.

    Доступные типы представления для значений float и
    Decimal:

    Тип Значение
    'e' Научная нотация. Для заданной точности p
    форматирует число в экспоненциальном представлении с буквой «e», отделяющей
    p цифр коэффициента от экспоненты. Коэффициент состоит из одной
    цифры перед и после десятичной точки, всего p + 1 значащих цифр.
    Если точность не указана, используется точность 6 цифр после
    десятичной точки для float и отображаются все цифры коэффициентов
    для Decimal. Если после десятичной точки нет цифр,
    десятичная точка также удаляется, если не используется опция #.
    'E' Научная нотация. То же, что и 'e', за исключением того, что в
    качестве символа-разделителя используется заглавная буква «E».
    'f' Запись с фиксированной точкой. Для заданной
    точности p форматирует число как десятичное с точностью p
    цифр после десятичной точки. Если точность не указана, используется
    точность 6 цифр после десятичной точки для float и
    используется точность, достаточно большая для отображения всех
    цифр коэффициентов для Decimal.
    Если после десятичной точки нет цифр, десятичная точка также удаляется,
    если не используется опция #.
    'F' Представление с фиксированной точкой. То же, что и 'f', но
    преобразует nan в NAN и inf в INF.
    'g'

    Общий формат. Для заданной точности p >= 1 округляет
    число до p значащих цифр и затем форматирует результат
    либо в формате с фиксированной точкой, либо в научном
    представлении, в зависимости от его величины.

    Точные правила следующие: предположим, что результат отформатирован
    с типом представления 'e' и p-1 точности, будет с exp
    экспонентой. Затем, если m <= exp < p, где m равно -4 для floats и -6
    для Decimals, число форматируется с типом
    представления 'f' и точностью p-1-exp. В противном случае номер
    форматируется с помощью 'e' типа представления и p-1 точности.
    В обоих случаях из значащего удаляются незначительные конечные нули,
    а десятичная точка также удаляется, если после неё
    нет оставшихся цифр, если не используется опция '#'.

    Без указания точности использует точность 6 значащих цифр
    для float. Для Decimal коэффициент
    результата формируется из цифр коэффициента значения; экспоненциальная
    нотация используется для значений, меньших, чем 1e-6 по абсолютной
    величине, и значений, в которых разряд наименее значащей цифры больше
    1, а в противном случае используется нотация с фиксированной точкой.

    Положительные и отрицательные бесконечности, положительный и
    отрицательный ноль и nan, форматируются как inf, -inf, 0,
    -0 и nan соответственно, независимо от точности.

    'G' Общий формат. То же, что и 'g', за исключением переключения на
    'E', если число становится слишком большим. Представления
    бесконечности и NaN также в верхнем регистре.
    'n' Номер. Это то же самое, что и 'g', за исключением того, что
    он использует текущую настройку локали для вставки
    соответствующих символов разделителя чисел.
    '%' Процент. Умножает число на 100 и отображает в фиксированном
    ('f') формате, за которым следует знак процента.
    None

    Для float это то же самое, что и для 'g', за исключением того,
    что когда для форматирования результата используется запись с фиксированной
    точкой, она всегда включает как минимум одну цифру после десятичной точки.
    Используемая точность настолько велика, насколько это необходимо для точного
    представления заданного значения.

    Для Decimal это то же самое, что 'g' или
    'G' в зависимости от значения context.capitals для
    текущего десятичного контекста.

    Общий эффект заключается в том, чтобы соответствовать выходным данным
    str(), измененному другими модификаторами формата.

    Примеры форматов

    В этом разделе содержатся примеры синтаксиса str.format() и сравнение со
    старым форматированием %.

    В большинстве случаев синтаксис аналогичен старому форматированию % с
    добавлением {} и с :, используемым вместо %. Например, '%03.2f'
    можно перевести в '{:03.2f}'.

    Синтаксис нового формата также поддерживает новые и различные параметры,
    показанные в следующих примерах.

    Доступ к аргументам по позиции:

    >>> '{0}, {1}, {2}'.format('a', 'b', 'c')
    'a, b, c'
    >>> '{}, {}, {}'.format('a', 'b', 'c')  # 3.1+ только
    'a, b, c'
    >>> '{2}, {1}, {0}'.format('a', 'b', 'c')
    'c, b, a'
    >>> '{2}, {1}, {0}'.format(*'abc')      # распаковка последовательности аргументов
    'c, b, a'
    >>> '{0}{1}{0}'.format('abra', 'cad')   # индексы аргументов могут повторяться
    'abracadabra'
    

    Доступ к аргументам по имени:

    >>> 'Координаты: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
    'Координаты: 37.24N, -115.81W'
    >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
    >>> 'Координаты: {latitude}, {longitude}'.format(**coord)
    'Координаты: 37.24N, -115.81W'
    

    Доступ к атрибутам аргументов:

    >>> c = 3-5j
    >>> ('Комплексное число {0} формируется из реальной части {0.real} '
    ...  'и мнимой части {0.imag}.').format(c)
    'Комплексное число (3-5j) формируется из реальной части 3.0 и мнимой части -5.0.'
    >>> class Point:
    ...     def __init__(self, x, y):
    ...         self.x, self.y = x, y
    ...     def __str__(self):
    ...         return 'Point({self.x}, {self.y})'.format(self=self)
    ...
    >>> str(Point(4, 2))
    'Point(4, 2)'
    

    Доступ к элементам аргументов:

    >>> coord = (3, 5)
    >>> 'X: {0[0]};  Y: {0[1]}'.30}'.format('centered')  # используйте '*' в качестве символа заполнения
    '***********centered***********'
    

    Замена %+f, %-f и % f и указание знака:

    >>> '{:+f}; {:+f}'.format(3.14, -3.14)  # показывать это всегда
    '+3.140000; -3.140000'
    >>> '{: f}; {: f}'.format(3.14, -3.14)  # показать пробел для положительных чисел
    ' 3.140000; -3.140000'
    >>> '{:-f}; {:-f}'.format(3.14, -3.14)  # показывать только минус-то же самое, что '{:f}; {:f}'
    '3.140000; -3.140000'
    

    Замена %x и %o и преобразование значения в разные базы:

    >>> # формат также поддерживает двоичные числа
    >>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
    'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
    >>> # с 0x, 0o или 0b как префикс:
    >>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)
    'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    

    Использование запятой в качестве разделителя тысяч:

    >>> '{:,}'.'
    '>>>>>>>>>>>right'
    >>>
    >>> octets = [192, 168, 0, 1]
    >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
    'C0A80001'
    >>> int(_, 16)
    3232235521
    >>>
    >>> width = 5
    >>> for num in range(5,12): 
    ...     for base in 'dXob':
    ...         print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
    ...     print()
    ...
        5     5     5   101
        6     6     6   110
        7     7     7   111
        8     8    10  1000
        9     9    11  1001
       10     A    12  1010
       11     B    13  1011
    

    Строки шаблона

    Строки шаблона обеспечивают более простые замены строк, как описано в
    PEP 292. Основным вариантом использования шаблонных строк является
    интернационализация (i18n), поскольку в этом контексте более простой синтаксис
    и функциональность упрощают перевод, чем другие встроенные средства
    форматирования строк в Python. В качестве примера библиотеки, построенной на
    шаблонных строках для i18n, см. пакет
    flufl.i18n.

    Строки шаблона поддерживают замены на основе $, используя следующие
    правила:

    • $$ — экранирование; он заменён одиночным $.
    • $identifier именует заполнитель подстановки, соответствующий ключу
      отображения "identifier". По умолчанию "identifier" ограничен любой
      нечувствительной к регистру буквенно-цифровой строкой ASCII (включая символы
      подчеркивания), которая начинается с символа подчеркивания или буквы ASCII.
      Первый неидентификационный символ после символа $ завершает эту
      спецификацию заполнителя.
    • ${identifier} эквивалентен $identifier. Это необходимо, когда за
      заполнителем следуют действительные символы идентификатора, но не являются
      его частью, например "${noun}ification".

    Любое другое появление $ в строке приведет к подъёму ValueError.

    Модуль string предоставляет класс Template, реализующий эти
    правила. Методы Template следующие:

    class string.Template(template)

    Конструктор принимает единственный аргумент — строку шаблона.

    substitute(mapping={}, /, **kwds)

    Выполняет подстановку шаблона, возвращая новую строку. mapping — это
    любой объект, подобный словарю, с ключами, соответствующими заполнителям
    в шаблоне. В качестве альтернативы вы можете предоставить ключевые
    аргументы, где ключевые слова являются заполнителями. Если указаны и
    mapping, и kwds, и есть дубликаты, заполнители из kwds приоритетнее.

    safe_substitute(mapping={}, /, **kwds)

    Подобно substitute(), за исключением того, что если в mapping и
    kwds отсутствуют заполнители, вместо того, чтобы вызывать исключение
    KeyError, исходный заполнитель будет отображаться в результирующей
    строке без изменений. Кроме того, в отличие от substitute(), любые
    другие появления $ будут просто возвращать $ вместо повышения
    ValueError.

    Хотя могут возникать и другие исключения, этот метод называется
    «безопасным», потому что он всегда пытается вернуть пригодную для
    использования строку вместо того, чтобы вызывать исключение. С другой
    стороны, safe_substitute() может быть чем угодно, кроме
    безопасного, поскольку он будет молча игнорировать искаженные шаблоны,
    содержащие висячие разделители, несовпадающие фигурные скобки или
    заполнители, которые не являются допустимыми идентификаторами Python.

    Экземпляры Template также предоставляют один атрибут общедоступных
    данных:

    template

    Это объект, переданный в аргумент конструктора template. В общем, вы не
    должны изменять его, но доступ только для чтения не применяется.

    Вот пример использования шаблона:

    >>> from string import Template
    >>> s = Template('$who likes $what')
    >>> s.substitute(who='tim', what='kung pao')
    'tim likes kung pao'
    >>> d = dict(who='tim')
    >>> Template('Give $who $100').substitute(d)
    Traceback (most recent call last):
    ...
    ValueError: Invalid placeholder in string: line 1, col 11
    >>> Template('$who likes $what').substitute(d)
    Traceback (most recent call last):
    ...
    KeyError: 'what'
    >>> Template('$who likes $what').safe_substitute(d)
    'tim likes $what'
    

    Расширенное использование: вы можете наследовать подклассы Template
    для настройки синтаксиса заполнителя, символа-разделителя или всего регулярного
    выражения, используемого для парсинга строк шаблона. Для этого
    вы можете переопределить эти атрибуты класса:

    • delimiter — это буквальная строка, описывающая заполнитель,
      представляющий разделитель. Значение по умолчанию — $. Обратите
      внимание, что он не должн быть регулярным выражением, поскольку
      реализация вызовет re.escape() для этой строки по мере необходимости.
      Обратите внимание, что вы не можете изменить разделитель после создания
      класса (т.е. в пространстве имён класса подкласса должен быть установлен
      другой разделитель).

    • idpattern — это регулярное выражение, описывающее шаблон для заполнителей
      без фигурных скобок. Значение по умолчанию — регулярное выражение
      (?a:[_a-z][_a-z0-9]*). Если это задано и braceidpattern равно None,
      этот шаблон также будет применяться к заполнителям в фигурных скобках.

      Примечание

      Поскольку по умолчанию flagsre.IGNORECASE, шаблон [a-z]
      может совпадать с некоторыми символами, отличными от ASCII. Вот почему мы
      используем здесь локальный флаг a.

      Изменено в версии 3.7: braceidpattern можно использовать для определения отдельных шаблонов,
      используемых внутри и снаружи фигурных скобок.

    • braceidpattern — аналогично idpattern, но описывает шаблон для
      заполнителей в фигурных скобках. По умолчанию используется None, что
      означает возврат к idpattern (т. е. один и тот же шаблон используется как
      внутри, так и за пределами фигурных скобок). Если задано, это позволяет вам
      определять разные шаблоны для заполнителей в скобках и без скобок.

      Добавлено в версии 3.7.

    • flags — флаги регулярного выражения, которые будут применяться при
      компиляции регулярного выражения, используемого для распознавания замен.
      Значение по умолчанию — re.IGNORECASE. Обратите внимание, что
      re.VERBOSE всегда будет добавляться к флагам, поэтому пользовательские
      idpatternы должны соответствовать соглашениям для подробных регулярных
      выражений.

      Добавлено в версии 3.2.

    В качестве альтернативы вы можете предоставить весь шаблон регулярного
    выражения, переопределив атрибут класса pattern. В этом случае значение
    должно быть объектом регулярного выражения с четырьмя именованными группами
    захвата. Группы захвата соответствуют правилам, приведенным выше, а также
    недопустимому правилу заполнителя:

    • escaped — эта группа соответствует управляющей последовательности,
      например $$, в шаблоне по умолчанию.
    • named — эта группа соответствует имени заполнителя без ограничений; она не
      должна включать разделитель в группу захвата.
    • braced — эта группа соответствует имени заполнителя в фигурных скобках; в
      группе захвата не должно быть ни разделителя, ни фигурных скобок.
    • invalid — эта группа соответствует любому другому шаблону разделителя
      (обычно с одним разделителем) и должна появляться последней в регулярном
      выражении.

    Язык Python: числа, строки, списки

    1. Язык Python¶

    При программировании на питоне первые полезные результаты
    начинают получаться минут через 5 после начала работы над
    проектом. Не надо изобретать никаких велосипедов: всё, что
    может понадобиться, доступно или в стандартной библиотеке,
    или в одном из многочисленных дополнительных пакетов.
    Программы получаются элегантные и лаконичные, их легко и
    приятно писать и читать. Имеется широкий выбор высококачественных инструментов программиста: интегрированные среды разработки, отладчики и средства тестирования и т.д. Питон прекрасно приспособлен для написания больших и сложных программных комплексов. И всё это совершенно не зависит от железа и операционной системы. Конечно, если не вызывать низкоуровневых системно-зависимыех библиотек.

    Главный минус — питон, мягко говоря, не славится потрясающим быстродействием. Писать программы сложных вычислений на питоне, конечно, глупо. Но есть ряд способов обойти это ограничение. Если программа занимается регулярной обработкой больших массивов чисел с плавающей точкой, то использование numpy радикально повышает её быстродействие. Пакет numpy и его расширение scipy фактически делают matlab ненужным — дают ту же функциональность с более приятным языком программирование. Есть ряд пакетов для построения высококачественных графиков, например, matplotlib. Другое средство повышения быстродействия — cython. Пишется программа, выглядящая почти как питонская, но со вставленными статичестими декларациями типов. cython транслирует её в исходный код на C, что часто даёт быстродействие, сравнимое с вручную написанным C. Программа на cython-е может свободно вызывать функции из библиотек на C;
    её можно использовать из обычного питона. Ну и наконец можно написать критически важные для быстродействия системы в целом вычисления на другом языке (C например), и вызывать эти внешние программы из питона. Питон при этом выполняет роль клея — реализует логику высокого уровня, системно-независимый GUI и т.д.

    Питон — сильно типизированный язык с динамической типизацией. Всё, с чем работает программа — объекты; каждый из них принадлежит определённому типу. Если программа пытается выполнить какую-то операцию над объектом такого типа, который не поддерживает эту операцию, произойдёт ошибка времени выполнения. Описаний переменных в питоне нет. Одна и та же переменная может в разные моменты иметь значения — объекты разных типов. Ошибка в типах может проявиться много времени спустя после того, как программа сдана в эксплуатацию, особенно если она происходит в редко используемом участке кода.
    Язык допускает ситуацию, когда мы сначала присвоим какой-то переменной целое число, потом строку, потом ещё что-то, но это плохой стиль. Переменная заводится для одного конкретного использования, и естественно, чтобы её значения в любой момент подходили для этого использования и имели одинаковый тип. В исходный текст на питоне 3.5 можно включить (необязательные) аннотации типов переменных и функций, и прогнать её через программу статической проверки типов.

    Питонячий стиль кода¶

    Обязательно прочитайте инструкцию по стилю кода: http://pep8.ru/doc/pep8/

    Желательно соблюдать стиль кода.
    Курсы Физтех.Статистики не являются курсами по программированию, поэтому полное соблюдение стиля не требуется.
    Перечислим кратко основные правила:

    • Отступы составляют ровно 4 пробела, табуляции не используются. К слову, в Питоне нет ключевых слов по типу { и } в C и begin и end в Паскале. Блоки кода разделяются пробелами.
    • Все переменные должны иметь понятные названия и состоять только из строчных букв. Например, вместо того, чтобы назвать выборку как X, лучше назвать ее sample. В качестве разделителей используйте подчеркивания. В редких случаях можно и отступать от этого правила, если обозначения понятны из решаемой задачи.
    • Вокруг всех знаков арифметических операций, присваивания и пр. обязательны пробелы с двух сторон. Исключение — запись вида a=b в аргументах функции. Примеры будут далее.
    • Разделяйте логические куски программы пустыми строками. Врядли вы сможете написать код строк на 10-15, в который нельзя вставить ни одну пустую строку, разделяющую код на логические части. ПЕРЕД всеми логическими кусками кода должен быть комментарий к этому куску кода.
    • Все функции (кроме самых маленьких) должны содержать подробную документацию, написанную по правилам оформления документаций.
    • Если комментарий дается на строке с кодом, то оформить его стоит так:

    код [ровно 2 пробела] # [ровно 1 пробел] комментарий

    • Если комментарий дается на отдельной строке, то он должен иметь тот же отступ, что и строка кода под ним. Скорее всего перед таким комментарием можно вставить пустую строку.
    • Не нужно комментировать очевидное.
    • Не нужно писать весь код в одной ячейке ноутбука!!!
    • Если есть возможность, при выводе десятичных чисел следует оставлять разумное число знаков после запятой.

    Отдельно стоит отметить, что код должен быть понятен проверяющему.
    В частности, должны использоваться понятные названия переменных и присутствовать подробные комментарии.
    Если проверяющий не поймет код, оценка за задание может быть снижена, и будет пичалька.

    2. Числа¶

    Арифметические операции имеют ожидаемые приоритеты. При необходимости используются скобки.

    Python String maketrans () — метод

    ❮ Строковые методы


    Пример

    Создайте таблицу сопоставления и используйте ее в методе translate () для замены любых символов «S» на символ «P»:

    txt = «Привет, Сэм!»
    mytable = txt.maketrans («S», «P»)
    print (txt.translate (mytable))

    Попробуй сам »


    Определение и использование

    Метод maketrans () возвращает отображение
    стол, который можно использовать с
    translate ()
    метод для замены
    указанные символы.


    Синтаксис

    строка .maketrans ( x, y, z )

    Значения параметров

    Параметр Описание
    х Обязательно. Если указан только один параметр, это должен быть словарь, описывающий, как
    выполнить замену. Если указаны два или более параметра, этот параметр
    должен быть строкой, определяющей символы, которые вы хотите заменить.
    y Необязательно. Строка той же длины, что и параметр x. Каждый персонаж
    в первом параметре будет заменен на соответствующий символ в
    эта строка.
    z Необязательно. Строка, описывающая, какие символы нужно удалить из
    исходная строка.

    Другие примеры

    Пример

    Используйте таблицу сопоставления для замены многих символов:

    txt = «Привет, Сэм!»
    x = «mSa»
    y = «eJo»
    mytable = txt.макетранс (х,
    y)
    print (txt.translate (mytable))

    Попробуй сам »

    Пример

    Третий параметр в таблице сопоставления описывает символы, которые вы хотите
    удалить из строки:

    txt = «Спокойной ночи, Сэм!»
    x = «mSa»
    y = «eJo»
    z = «odnght»
    mytable = txt.maketrans (x, y, z)
    print (txt.translate (mytable))

    Попробуй сам »

    Пример

    Сам метод maketrans () возвращает
    словарь, описывающий каждую замену в юникоде:

    txt = «Спокойной ночи, Сэм!»
    x = «mSa»
    y = «eJo»
    z = «odnght»
    print (txt.макетранс (х, у, z))

    Попробуй сам »


    ❮ Строковые методы

    10 полезных строковых функций Python, о которых вы точно должны знать!

    Эта статья была опубликована в рамках Data Science Blogathon

    Введение

    Строка Python — это встроенная последовательность типов. Строки можно использовать для обработки текстовых данных в Python. Строки Python — это неизменяемые последовательности точек Unicode. Создание строк является самым простым и легким в использовании в Python.Чтобы создать строку в Python, мы просто заключаем текст в одинарные или двойные кавычки. Python одинаково обрабатывает инструкции как с одинарными, так и с двойными кавычками. Итак, в этой статье мы обсудим некоторые важные и полезные функции строк в Python для Data Analysis и Data Manipulation , в основном используемые в Natural Language Processing (NLP).

    Чтобы правильно читать эту статью, я предполагаю, что вы знакомы с основами Python. Если нет, я рекомендую следующий популярный курс, проводимый Analytics Vidhya, чтобы начать работу с основами Python:

    Python для науки о данных

    Источник изображения: Ссылка

    Строковые функции Python

    Строковые функции Python, которые мы собираемся обсудить в этой статье, следующие:

    • Функция capitalize ()
    • нижняя () функция
    • title () функция
    • casefold () функция
    • верхняя () функция
    • Функция count ()
    • функция find ()
    • функция replace ()
    • функция swapcase ()
    • функция join ()

    Источник изображения: Ссылка

    Функция capitalize ()

    Функция capitalize () возвращает строку, в которой первый символ — это верхний регистр.

      Синтаксис: string.capitalize ()  

    Пример 1. Сделать первую букву заглавной в данном предложении

     string = "Analytics Vidhya - крупнейшее сообщество специалистов в области науки о данных"
    печать (строка.capitalize ()) 

    Выход:

     Analytics vidhya - крупнейшее сообщество специалистов по анализу данных 

    Пример 2: Что произойдет, если первым символом будет число вместо символа

     string = '10 версия Data Science Blogathon от Analytics Vidhya очень хороша'
    печать (строка.заглавная ()) 

    Выход:

     10 версия блогатона по науке о данных от Analytics vidhya is very good 

    нижний () функция

    Функция lower () возвращает строку, в которой все символы в данной строке строчные. Эта функция ничего не делает с символами и числами, то есть просто игнорирует эти вещи.

      Синтаксис: string.lower ()  

    Пример 1: нижний регистр данной строки

     string = "Analytics Vidhya - крупнейшее сообщество специалистов по науке о данных"
    печать (строка.нижний ()) 

    Выход:

     analytics vidhya - крупнейшее сообщество специалистов по обработке и анализу данных 

    Пример 2: Что произойдет, если вместо символа стоит число

     string = '10 версия Data Science Blogathon от Analytics Vidhya очень хороша'
    print (string.lower ()) 

    Выход:

     10 версия блогатона по науке о данных от Analytics vidhya is very good 

    название () функция

    Функция title () возвращает строку, в которой первый символ в каждом слове строки — это верхний регистр.Это похоже на заголовок или заголовок.

    Если в строке какое-либо из слов содержит число или символ, то эта функция преобразует первую после этого букву в верхний регистр.

      Синтаксис: string.title ()  

    Пример 1: Сделайте первую букву в каждом слове заглавной

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    print (string.title ()) 

    Выход:

     Analytics Vidhya - крупнейшее сообщество специалистов по науке о данных 

    Пример 2: Что произойдет, если вместо символа стоит число

     string = '10-я версия Data Science Blogathon от Analytics Vidhya очень хороша'
    печать (строка.название ()) 

    Выход:

     10-я версия блогатона по науке о данных, проведенная Analytics Vidhya Is Very Good 

    корпус () функция

    Функция casefold () возвращает строку, в которой все символы в нижнем регистре.

    Эта функция похожа на функцию lower (), но функция casefold () более сильная и агрессивная, что означает, что она преобразует больше символов в нижний регистр и найдет больше совпадений при сравнении двух строк, и обе будут преобразованы с использованием casefold () функция.

      Синтаксис: string.casefold ()  

    Пример 1: преобразовать данную строку в нижний регистр

     string = "Analytics Vidhya - крупнейшее сообщество специалистов по науке о данных"
    печать (строка.casefold ()) 

    Выход:

     analytics vidhya - крупнейшее сообщество специалистов по обработке и анализу данных 

    Пример 2: Что произойдет, если вместо символа стоит число

     string = '10-я версия Data Science Blogathon от Analytics Vidhya очень хороша'
    печать (строка.чехол ()) 

    Выход:

     10-я версия блогатона по науке о данных от Analytics vidhya is very good 

    верх () функция

    Функция upper () возвращает строку, в которой все символы данной строки находятся в верхнем регистре. Эта функция ничего не делает с символами и числами, то есть просто игнорирует эти вещи.

      Синтаксис: string.upper ()  

    Пример 1: Заданная строка в верхнем регистре

     string = "Analytics Vidhya - крупнейшее сообщество специалистов по науке о данных"
    печать (строка.верх ()) 

    Выход:

     АНАЛИТИКА VIDHYA - КРУПНЕЙШИЕ СООБЩЕСТВА НАУКИ ДАННЫХ 

    Пример 2: Что произойдет, если вместо символа стоит число

     string = '10-я версия Data Science Blogathon от Analytics Vidhya очень хороша'
    печать (строка.upper ()) 

    Выход:

     10-Я ВЕРСИЯ БЛОГАТОНА НАУКИ ДАННЫХ ОТ ANALYTICS VIDHYA ОЧЕНЬ ХОРОШАЯ 

    count () функция

    Функция count () находит, сколько раз указанное значение (указанное пользователем) встречается в данной строке.

      Синтаксис: string.count (значение, начало, конец)  

    Пример 1. Возвращает, сколько раз значение «аналитика» встречается в строке

     string = "Analytics Vidhya - крупнейшее аналитическое сообщество"
    print (string.count ("аналитика")) 

    Выход:

     1 

    Пример 2: Возвращает, сколько раз значение «аналитика» встречается в строке с позиции 10 по 18

     string = "analytics Vidhya - крупнейшее аналитическое сообщество"
    печать (строка.count ("аналитика", 10, 18)) 

    Выход:

     0 

    функция find ()

    Функция find () находит первое вхождение указанного значения. Он возвращает -1, если значение не найдено в этой строке.

    Функция find () почти такая же, как функция index (), но с той лишь разницей, что функция index () вызывает исключение, если значение не найдено.

      Синтаксис: string.find (значение, начало, конец)  

    Пример 1. Где в тексте впервые встречается буква «d»?

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    печать (строка.найти ("d")) 

    Выход:

    12

    Пример 2: Где в тексте впервые встречается буква «d» при поиске только между позициями 5 и 16?

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    print (string.find ("d", 5, 16)) 

    Выход:

     12 

    Пример 3: Если значение не найдено, функция find () возвращает -1, но функция index () вызовет исключение

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    печать (строка.find ("d", 5, 10)) 

    Выход:

    –1 

    функция replace ()

    Функция replace () заменяет указанную фразу другой указанной фразой.

    Примечание: Все вхождения указанной фразы будут заменены, если не указано иное.

      Синтаксис: string.replace (oldvalue, newvalue, count)  

    Пример 1. Заменить все вхождения слова «наука»

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    печать (строка.replace ("наука", "ученые")) 

    Выход:

     analytics vidhya - крупнейшее сообщество специалистов по данным 

    Пример 2. Заменить только первое вхождение слова «наука»

     string = "Курсы Data Science от компании analytics vidhya - лучшие курсы для изучения Data Science"
    print (string.replace ("наука", "ученые", 1)) 

    Выход:

     Специалисты по обработке данных Курсы аналитики видхья - лучшие курсы для изучения науки о данных 

    функция swapcase ()

    Функция swapcase () возвращает строку, в которой все буквы верхнего регистра являются строчными, и наоборот.

      Синтаксис: string.swapcase ()  

    Пример 1: преобразовать строчные буквы в верхний регистр, а прописные буквы в нижний регистр

     string = "analytics vidhya - крупнейшее сообщество специалистов в области данных"
    печать (строка.swapcase ()) 

    Выход:

     АНАЛИТИКА VIDHYA - КРУПНЕЙШИЕ СООБЩЕСТВА НАУКИ ДАННЫХ 

    Пример 2: Что произойдет, если вместо символа стоит число

     string = '10-я версия Data Science Blogathon от Analytics Vidhya очень хороша'
    печать (строка.swapcase ()) 

    Выход:

     ОЧЕНЬ ХОРОШАЯ 10-Я ВЕРСИЯ БЛОГАФОНА DATA sCIENCE ОТ ANALYTICS VIDHYA 

    функция join ()

    Функция join () берет все элементы итерации и объединяет их в одну строку. Мы должны указать строку в качестве разделителя.

      Синтаксис: string.join (итерация)  

    Пример 1. Объединить все элементы в заданном кортеже в строку, используя символ # (хэштег) в качестве разделителя

     myTuple = («Специалисты по обработке данных», «Машинное обучение», «Наука о данных»)
    х = "#".присоединиться (myTuple)
    печать (х) 

    Выход:

     Data Scientists # Machine Learning # Data Science 

    Пример 2: объединить все элементы данного словаря в строку, используя слово «ТЕСТ» в качестве разделителя.

     myDict = {"name": "Analytics Vidhya", "country": "Индия", "Technology": "Data Science"}
    mySeparator = "ТЕСТ"
    x = mySeparator.join (myDict)
    печать (х) 

    Выход:

     nameTESTcountryTESTTechnology 

    Другие мои сообщения в блоге

    Вы также можете проверить мои предыдущие сообщения в блоге.

    Предыдущие сообщения в блоге Data Science.

    LinkedIn

    Вот мой профиль в Linkedin на случай, если вы захотите связаться со мной. Я буду счастлив быть на связи с вами.

    Эл. Почта

    По любым вопросам вы можете написать мне на Gmail .

    Примечания к концу

    Спасибо за чтение!

    Надеюсь, статья вам понравилась. Если вам это нравится, поделитесь им и со своими друзьями. Что-то не упомянуто или хотите поделиться своими мыслями? Не стесняйтесь комментировать ниже, и я вернусь к вам. 😉

    Носители, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.

    Связанные

    7.1. string — Стандартные строковые операции — документация Python 2.7.18

    Модуль string содержит ряд полезных констант и
    классы, а также некоторые устаревшие устаревшие функции, которые также
    доступны как методы для строк.Кроме того, встроенная строка Python
    классы поддерживают методы типа последовательности, описанные в
    Типы последовательностей — str, unicode, list, tuple, bytearray, buffer, xrange section, а также описанные строковые методы
    в разделе Строковые методы. Для вывода отформатированных строк используйте
    строки шаблона или оператор % , описанный в
    Раздел «Операции форматирования строк». Также см. Модуль re для
    строковые функции на основе регулярных выражений.

    7.1.1. Строковые константы

    В этом модуле определены следующие константы:

    строка. ascii_letters

    Объединение ascii_lowercase и ascii_uppercase
    константы, описанные ниже. Это значение не зависит от языкового стандарта.

    строка. ascii_lowercase

    Строчные буквы 'abcdefghijklmnopqrstuvwxyz' . Это значение не
    зависит от локали и не изменится.

    строка. ascii_uppercase

    Заглавные буквы 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .Это значение не
    зависит от локали и не изменится.

    строка. цифр

    Строка '0123456789' .

    строка. шестнадцатеричных цифр

    Строка '0123456789abcdefABCDEF' .

    строка. букв

    Объединение строк в нижнем регистре и в верхнем регистре
    описано ниже.Конкретное значение зависит от локали и будет обновлено.
    когда вызывается locale.setlocale () .

    строка. строчная

    Строка, содержащая все символы, которые считаются строчными буквами.
    В большинстве систем это строка 'abcdefghijklmnopqrstuvwxyz' . В
    конкретное значение зависит от локали и будет обновлено, когда
    locale.setlocale () вызывается .

    строка. восьмеричных цифр

    Строка '01234567' .

    строка. знаки препинания

    Строка символов ASCII, которые считаются символами пунктуации в
    C локаль.

    строка. для печати

    Строка символов, которые считаются печатаемыми. Это комбинация
    цифр , букв , знаков препинания и
    пробел .

    строка. прописные

    Строка, содержащая все символы, которые считаются прописными буквами.
    В большинстве систем это строка 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . В
    конкретное значение зависит от локали и будет обновлено, когда
    locale.setlocale () вызывается .

    строка. пробел

    Строка, содержащая все символы, считающиеся пробелами.На большинстве
    системы это включает пробел символов, табуляцию, перевод строки, возврат, перевод страницы и
    вертикальная табуляция.

    7.1.2. Пользовательское форматирование строки

    Встроенные классы str и unicode предоставляют возможность
    выполнять сложные подстановки переменных и форматирование значений с помощью
    str.format () метод, описанный в PEP 3101 . Форматирование
    класс в модуле string позволяет создавать и настраивать свои собственные
    поведение форматирования строк с использованием той же реализации, что и встроенная
    формат () метод.

    класс строка. Форматер

    Класс Formatter имеет следующие общедоступные методы:

    формат ( format_string , * args , ** kwargs )

    Основной метод API. Требуется строка формата и
    произвольный набор позиционных и ключевых аргументов.
    Это просто оболочка, которая вызывает vformat () .

    vformat ( format_string , args , kwargs )

    Эта функция выполняет фактическую работу по форматированию.Он выставлен как
    отдельная функция для случаев, когда вы хотите передать предопределенный
    словарь аргументов, а не распаковывать и переупаковывать
    словарь как отдельные аргументы с использованием * args и ** kwargs
    синтаксис. vformat () выполняет работу по разбиению строки формата
    в символьные данные и поля замены. Он вызывает различные
    методы, описанные ниже.

    Кроме того, Formatter определяет ряд методов, которые
    предполагается заменить подклассами:

    синтаксический анализ ( format_string )

    Перебирать строку format_string и возвращать итерацию кортежей
    ( literal_text , field_name , format_spec , преобразование ).Это используется
    на vformat () , чтобы разбить строку на буквальный текст или
    поля замены.

    Значения в кортеже концептуально представляют собой диапазон буквального текста.
    за которым следует одно поле замены. Если нет буквального текста
    (что может произойти, если два поля замены встречаются последовательно), тогда
    literal_text будет строкой нулевой длины. Если нет замены
    field, затем значения field_name , format_spec и преобразование
    будет Нет .

    get_field ( имя_поля , args , kwargs )

    Учитывая field_name , возвращенное функцией parse () (см. Выше), преобразуйте его в
    форматируемый объект. Возвращает кортеж (obj, used_key). По умолчанию
    версия принимает строки формы, определенной в PEP 3101 , например
    «0 [имя]» или «label.title». args и kwargs переданы в
    вформат () .Возвращаемое значение used_key имеет то же значение, что и
    ключ параметр для get_value () .

    get_value ( ключ , args , kwargs )

    Получить значение заданного поля. Аргумент ключа будет либо
    целое число или строка. Если это целое число, оно представляет собой индекс
    позиционный аргумент в args ; если это строка, то она представляет собой
    названный аргумент в kwargs .

    Параметр args установлен в список позиционных аргументов для
    vformat () , а параметр kwargs установлен в словарь
    аргументы ключевого слова.

    Для составных имен полей эти функции вызываются только для первого
    компонент имени поля; Последующие компоненты обрабатываются через
    обычные операции с атрибутами и индексацией.

    Так, например, выражение поля «0.name» вызовет
    get_value () для вызова с ключом аргумент 0.Название
    атрибут будет найден после того, как get_value () вернется путем вызова
    встроенная функция getattr () .

    Если индекс или ключевое слово относятся к несуществующему элементу, то
    IndexError или KeyError должен возникнуть.

    check_unused_args ( used_args , args , kwargs )

    При необходимости выполните проверку неиспользуемых аргументов.Аргументы в пользу этого
    функция — это набор всех ключей аргументов, которые фактически упоминались в
    строка формата (целые числа для позиционных аргументов и строки для
    именованные аргументы), а также ссылку на args и kwargs , которые были
    перешел на вформат. Набор неиспользуемых аргументов может быть вычислен из этих
    параметры. check_unused_args () Предполагается, что вызовет исключение, если
    проверка не удалась.

    формат_поле ( значение , формат_спек )

    format_field () просто вызывает встроенный глобальный format ()
    предоставляется так, чтобы подклассы могли его переопределить.

    convert_field (значение , преобразование )

    Преобразует значение (возвращаемое функцией get_field () ) с учетом типа преобразования
    (как в кортеже, возвращаемом методом parse () ). По умолчанию
    версия понимает преобразование «s» (str), «r» (repr) и «a» (ascii)
    типы.

    7.1.3. Синтаксис строки формата

    ул.format () метод и класс Formatter используют одно и то же
    синтаксис для форматных строк (хотя в случае Formatter ,
    подклассы могут определять свой собственный синтаксис строки формата).

    Строки формата содержат «замещающие поля», заключенные в фигурные скобки {} .
    Все, что не заключено в фигурные скобки, считается буквальным текстом, т.е.
    скопировано без изменений на вывод. Если вам нужно включить фигурную скобку в
    буквальный текст, его можно экранировать удвоением: {{ и }} .

    Грамматика заменяемого поля выглядит следующим образом:

    В менее формальных терминах поле замены может начинаться с field_name , которое указывает
    объект, значение которого должно быть отформатировано и вставлено
    в вывод вместо поля замены.
    За полем field_name необязательно следует поле преобразования , которое
    перед ним стоит восклицательный знак '!' и format_spec , которому предшествует
    двоеточием ':' .Они указывают нестандартный формат для значения замены.

    См. Также раздел «Мини-язык спецификации формата».

    field_name само начинается с arg_name , которое является либо числом, либо
    ключевое слово. Если это число, это относится к позиционному аргументу, а если это ключевое слово,
    он ссылается на именованный аргумент ключевого слова. Если числовые arg_names в строке формата
    0, 1, 2,… последовательно, все они могут быть опущены (а не только некоторые)
    и числа 0, 1, 2,… будут автоматически вставлены в этом порядке.Поскольку arg_name не разделен кавычками, невозможно указать произвольный
    ключи словаря (например, строки '10' или ': -]' ) в строке формата.
    arg_name может сопровождаться любым числом индекса или
    выражения атрибутов. Выражение формы '.name' выбирает названный
    атрибут с использованием getattr () , а выражение вида '[index]'
    выполняет поиск по индексу с использованием __getitem __ () .

    Изменено в версии 2.7: указатели позиционных аргументов могут быть опущены для str.format () и
    unicode.format () , поэтому '{} {}' эквивалентно '{0} {1}' ,
    u '{} {}' эквивалентно u '{0} {1}' .

    Некоторые примеры простых форматных строк:

     "Сначала посчитай до {0}" # Ссылается на первый позиционный аргумент
    "Bring me a {}" # Неявно ссылается на первый позиционный аргумент
    "От {} до {}" # То же, что и "От {0} до {1}"
    "My quest is {name}" # Ссылка на аргумент ключевого слова 'name'
    "Вес в тоннах {0.weight} "# атрибут 'weight' первого позиционного аргумента
    "Юниты уничтожены: {player [0]}" # Первый элемент аргумента ключевого слова 'игроки'.
     

    Поле преобразования вызывает приведение типа перед форматированием. Обычно
    задание форматирования значения выполняется методом __format __ () значения
    сам. Однако в некоторых случаях желательно принудительно отформатировать тип.
    как строку, переопределяя собственное определение форматирования. Преобразуя
    значение в строку перед вызовом __format __ () , нормальная логика форматирования
    обходится.

    В настоящее время поддерживаются два флага преобразования: '! S' , который вызывает str ()
    по значению и '! r' , который вызывает repr () .

    Некоторые примеры:

     "Гарольд умный {0! S}" # Сначала вызывает str () для аргумента
    "Вывести святое {имя! R}" # Сначала вызывает repr () для аргумента
     

    Поле format_spec содержит спецификацию того, каким должно быть значение.
    представлены, включая такие детали, как ширина поля, выравнивание, заполнение, десятичная дробь
    точность и так далее.Каждый тип значения может определять свое собственное «форматирование.
    мини-язык »или интерпретация format_spec .

    Большинство встроенных типов поддерживают общий мини-язык форматирования, который
    описано в следующем разделе.

    Поле format_spec может также включать в себя вложенные поля замены.
    Эти вложенные поля замены могут содержать имя поля, флаг преобразования.
    и спецификация формата, но более глубокая вложенность
    не допускается. Поля замены в
    format_spec подставляются перед интерпретацией строки format_spec .Это позволяет динамически указывать форматирование значения.

    Некоторые примеры см. В разделе «Примеры форматов».

    7.1.3.1. Спецификация формата Mini-Language

    «Спецификации формата» используются в полях замены, содержащихся в
    строка формата для определения того, как представлены отдельные значения (см.
    Синтаксис строки формата). Их также можно передать напрямую во встроенный
    формат () функция. Каждый тип таблицы форматирования может определять, как формат
    Спецификация подлежит интерпретации.

    Большинство встроенных типов реализуют следующие параметры спецификаций формата:
    хотя некоторые параметры форматирования поддерживаются только числовыми типами.

    По общему правилу, пустая строка формата ( "" ) дает
    тот же результат, как если бы вы вызвали str () для значения. А
    непустая строка формата обычно изменяет результат.

    Общая форма описателя стандартного формата :

      format_spec  :: = [[ fill ]  align ] [ sign ] [#] [0] [ width ] [,] [."
      знак  :: = "+" | "-" | ""
      ширина  :: =  целое число 
      точность  :: =  целое 
      тип  :: = "b" | "с" | "д" | "е" | "E" | "е" | "F" | "г" | "G" | "п" | "о" | "s" | «х» | «Х» | "%"
     

    Если указано допустимое значение align , ему может предшествовать заливка
    символ, который может быть любым символом; если он опущен, по умолчанию используется пробел.
    Невозможно использовать буквальную фигурную скобку (« {» или «} ») в качестве
    заполнить символ при использовании str.формат ()
    метод. Однако можно вставить фигурную скобку.
    с вложенным полем замены. Это ограничение не
    влияет на функцию format () .

    Значение различных вариантов выравнивания следующее:

    Опция

    Значение

    '<'

    Принудительное выравнивание поля по левому краю в пределах доступного
    пробел (это значение по умолчанию для большинства объектов).

    '>'

    Принудительное выравнивание поля по правому краю в пределах
    доступное пространство (это значение по умолчанию для чисел).

    '='

    Принудительно помещает отступы после знака (если есть)
    но до цифр. Используется для печати полей
    в виде «+000000120». Этот вариант выравнивания только
    действительно для числовых типов. Он становится значением по умолчанию, когда «0»
    непосредственно перед шириной поля.'

    Принудительно центрирует поле в пределах доступного
    Космос.

    Обратите внимание, что если минимальная ширина поля не определена, ширина поля всегда будет
    быть того же размера, что и данные для его заполнения, поэтому параметр выравнивания не имеет
    смысл в данном случае.

    Знак Параметр действителен только для числовых типов и может быть одним из
    следующий:

    Опция

    Значение

    '+'

    указывает, что знак должен использоваться для обоих
    положительные и отрицательные числа.

    '-'

    указывает, что знак следует использовать только для отрицательных
    числа (это поведение по умолчанию).

    место

    указывает, что на
    положительные числа и знак минус на отрицательных числах.

    Параметр '#' действителен только для целых чисел и только для двоичных, восьмеричных или
    шестнадцатеричный вывод.Если присутствует, он указывает, что вывод будет иметь префикс.
    на '0b' , '0o' или '0x' соответственно.

    Опция ',' сигнализирует об использовании запятой для разделителя тысяч.
    Для разделителя с учетом языкового стандарта используйте целочисленный тип представления 'n' .
    вместо.

    Изменено в версии 2.7: добавлены опции ',' (см. Также PEP 378 ).

    ширина — десятичное целое число, определяющее минимальную ширину поля.Если не
    указано, то ширина поля будет определяться содержимым.

    Если не указано явное выравнивание, перед полем шириной стоит ноль
    ( '0' ) символ включает
    знаковое заполнение нулями для числовых типов. Это эквивалентно заливке
    символ '0' с выравниванием тип '=' .

    Точность — десятичное число, указывающее, сколько цифр должно быть
    отображается после десятичной точки для значения с плавающей запятой, отформатированного с помощью
    'f' и 'F' , или до и после десятичной точки для чисел с плавающей запятой
    значение, отформатированное как 'g' или 'G' .Для нечисловых типов поле
    указывает максимальный размер поля — другими словами, сколько символов будет
    используется из содержимого поля. Точность недопустима для целочисленных значений.

    Наконец, тип определяет, как данные должны быть представлены.

    Доступные типы представления строк:

    Тип

    Значение

    's'

    Строковый формат.Это тип по умолчанию для строк и
    может быть опущен.

    Нет

    То же, что и .

    Доступные целочисленные типы представления:

    Тип

    Значение

    'b'

    Двоичный формат. Выводит число по основанию 2.

    'c'

    Персонаж. Преобразует целое число в соответствующее
    символ юникода перед печатью.

    'd'

    Целое десятичное число. Выводит число по основанию 10.

    'о'

    Восьмеричный формат. Выводит число по основанию 8.

    'x'

    Шестнадцатеричный формат.Выводит число по основанию 16, используя нижние-
    регистр букв для цифр выше 9.

    'X'

    Шестнадцатеричный формат. Выводит число по основанию 16, используя верхний-
    регистр букв для цифр выше 9.

    'n'

    Номер. Это то же самое, что и 'd' , за исключением того, что в нем используется
    текущий параметр локали, чтобы вставить соответствующий
    числовые разделители символов.

    Нет

    То же, что d .

    В дополнение к указанным выше типам представления целые числа могут быть отформатированы.
    с типами представления с плавающей запятой, перечисленными ниже (кроме
    'n' и Нет ). При этом float () используется для преобразования
    целое число в число с плавающей запятой перед форматированием.

    Доступные типы представления для значений с плавающей запятой и десятичных значений:

    Тип

    Значение

    'e'

    Показатель экспоненты.Печатает число в научном формате
    обозначение с использованием буквы «е» для обозначения степени.
    Точность по умолчанию — 6 .

    'E'

    Показатель экспоненты. То же, что 'e' , за исключением того, что в нем используется
    заглавная буква «E» в качестве символа-разделителя.

    'f'

    Обозначение с фиксированной точкой. Отображает число как
    число с фиксированной точкой. Точность по умолчанию — 6 .

    'F'

    Обозначение с фиксированной точкой. То же, что 'f' .

    'г'

    Общий формат. Для заданной точности p> = 1 ,
    это округляет число до p значащих цифр и
    затем форматирует результат в формате с фиксированной точкой
    или в научном обозначении, в зависимости от его величины.

    Точные правила таковы: предположим, что
    результат отформатирован с типом представления 'e' и
    точность p-1 будет иметь показатель степени exp .потом
    если -4 <= exp

    , число форматируется
    с типом представления 'f' и точностью
    п-1-ехр . В противном случае число форматируется
    с типом представления 'e' и точностью p-1 .
    В обоих случаях убираются незначащие нули в конце.
    из мантиссы, и десятичная точка также
    удаляется, если после него нет оставшихся цифр.

    Положительная и отрицательная бесконечность, положительная и отрицательная
    ноль и nans форматируются как inf , -inf ,
    0 , -0 и нан соответственно, независимо от
    точность.

    Точность 0 рассматривается как эквивалент
    точность 1 . Точность по умолчанию - 6 .

    'G'

    Общий формат. То же, что 'g' , за исключением переключения на
    'E' , если число становится слишком большим. В
    представления бесконечности и NaN также в верхнем регистре.

    'n'

    Номер.Это то же самое, что 'g' , за исключением того, что в нем используется
    текущий параметр локали, чтобы вставить соответствующий
    числовые разделители символов.

    '%'

    Процент. Умножает число на 100 и отображает
    в фиксированном формате ( 'f' ), за которым следует знак процента.

    Нет

    То же, что g .

    7.1.3.2. Примеры формата

    Этот раздел содержит примеры синтаксиса str.format () и
    сравнение со старым % -форматирование.

    В большинстве случаев синтаксис аналогичен старому форматированию % , с
    добавление {} и : вместо % .
    Например, '% 03.2f' можно преобразовать в '{: 03.2f}' .

    Новый синтаксис формата также поддерживает новые и различные параметры, показанные в
    следующие примеры.

    Доступ к аргументам по позиции:

     >>> '{0}, {1}, {2}'. Format ('a', 'b', 'c')
    'а, б, в'
    >>> '{}, {}, {}'. format ('a', 'b', 'c') только # 2.7+
    'а, б, в'
    >>> '{2}, {1}, {0}'. Format ('a', 'b', 'c')
    'c, b, a'
    >>> '{2}, {1}, {0}'. Format (* 'abc') # распаковка последовательности аргументов
    'c, b, a'
    >>> '{0} {1} {0}'. Format ('abra', 'cad') # arguments 'индексы могут повторяться
    'абракадабра'
     

    Доступ к аргументам по имени:

     >>> 'Координаты: {широта}, {долгота}'.формат (широта = '37,24N ', долгота =' - 115,81W ')
    'Координаты: 37.24N, -115.81W'.
    >>> Coord = {'latitude': '37 .24N ',' longitude ':' -115.81W '}
    >>> 'Координаты: {широта}, {долгота}'. Формат (** координаты)
    'Координаты: 37.24N, -115.81W'.
     

    Атрибуты аргументов доступа:

     >>> c = 3-5j
    >>> ('Комплексное число {0} образовано из действительной части {0.real}'
    ... 'и мнимая часть {0.imag}.'). формат (c)
    'Комплексное число (3-5j) образовано из действительной части 3.0 и мнимая часть -5.0. '
    >>> класс Point (объект):
    ... def __init __ (self, x, y):
    ... self.x, self.y = x, y
    ... def __str __ (сам):
    ... вернуть 'Point ({self.x}, {self.y})'. format (self = self)
    ...
    >>> str (Точка (4, 2))
    'Точка (4, 2)'
     

    Доступ к элементам аргументов:

     >>> координата = (3, 5)
    >>> 'X: {0 [0]}; Y: {0 [1]} '. Формат (координаты)
    'X: 3; Y: 5 '
     

    Замена % s и % r :

     >>> "repr () показывает кавычки: {! R}; str () не показывает: {! S}".30} '. Format (' center ') # используйте' * 'в качестве символа заполнения
    '*********** по центру ***********'
     

    Замена % + f , % -f и % f и указание знака:

     >>> '{: + f}; {: + f} '. format (3.14, -3.14) # показывать всегда
    '+3.140000; -3,140000 '
    >>> '{: f}; {: f} '. format (3.14, -3.14) # показать пробел для положительных чисел
    '3.140000; -3,140000 '
    >>> '{: -f}; {: -f} '. format (3.14, -3.14) # показывать только минус - то же, что и' {: f}; {: f} '
    '3.140000; -3,140000 '
     

    Замена % x и % на и преобразование значения в другое основание:

     >>> # формат также поддерживает двоичные числа
    >>> "int: {0: d}; hex: {0: x}; oct: {0: o}; bin: {0: b}". format (42)
    'int: 42; шестнадцатеричный: 2а; октябрь: 52; бункер: 101010 '
    >>> # с префиксом 0x, 0o или 0b:
    >>> "int: {0: d}; hex: {0: #x}; oct: {0: #o}; bin: {0: #b}". format (42)
    'int: 42; шестнадцатеричный: 0x2a; окт: 0o52; корзина: 0b101010 '
     

    Использование запятой в качестве разделителя тысяч:

     >>> '{:,}'.формат (1234567890)
    '1,234,567,890'
     

    В процентах:

     >>> баллов = 19,5
    >>> всего = 22
    >>> 'Правильные ответы: {: .2%}'. Формат (баллов / всего)
    "Правильные ответы: 88,64%"
     

    Использование форматирования для конкретного типа:

     >>> дата и время импорта
    >>> d = datetime.>', ['left', 'center', 'right']):
    .'
    '>>>>>>>>>>> правильно'
    >>>
    >>> октеты = [192, 168, 0, 1]
    >>> '{: 02X} {: 02X} {: 02X} {: 02X}'. Формат (* октеты)
    'C0A80001'
    >>> интервал (_, 16)
    3232235521
    >>>
    >>> ширина = 5
    >>> для числа в диапазоне (5,12):
    ... для базы в 'dXob':
    ... напечатать '{0: {width} {base}}'. format (num, base = base, width = width),
    ...     Распечатать
    ...
        5 5 5 101
        6 6 6 110
        7 7 7 111
        8 8 10 1000
        9 9 11 1001
       10 А 12 1010
       11 В 13 1011
     

    7.1.4. Строки шаблона

    Шаблоны

    обеспечивают более простые замены строк, как описано в PEP 292 .
    Вместо обычных замен на основе % шаблоны поддерживают замены на основе $ , используя следующие правила:

    • $$ - побег; он заменяется одиночным $.

    • $ идентификатор именует заполнитель подстановки, соответствующий ключу сопоставления
      «идентификатор» .По умолчанию "идентификатор" должен означать Python.
      идентификатор. Первый неидентификационный символ после символа $
      завершает эту спецификацию заполнителя.

    • $ {идентификатор} эквивалентно $ идентификатору . Требуется при действии
      символы идентификатора следуют за заполнителем, но не являются частью
      заполнитель, например "$ {существительное} ification" .

    Любое другое появление $ в строке приведет к ValueError
    поднимается.

    Модуль string предоставляет класс Template , который реализует
    эти правила. Методы шаблона Template :

    класс строка. Шаблон ( шаблон )

    Конструктор принимает единственный аргумент - строку шаблона.

    заменить ( отображение [, ** кВт ])

    Выполняет подстановку шаблона, возвращая новую строку. отображение есть
    любой подобный словарю объект с ключами, которые соответствуют заполнителям в
    шаблон. В качестве альтернативы вы можете указать аргументы ключевого слова, где
    ключевые слова - это заполнители. Когда заданы оба сопоставления и кВт
    и есть дубликаты, заглушки от kws имеют приоритет.

    safe_substitute ( отображение [, ** kws ])

    Как , замените () , за исключением того, что если заполнители отсутствуют в
    сопоставление и кВт , вместо того, чтобы вызывать исключение KeyError ,
    исходный заполнитель появится в результирующей строке без изменений.Также,
    в отличие от замены () , любые другие появления $ будут
    просто верните $ вместо того, чтобы вызывать ValueError .

    Хотя могут возникать и другие исключения, этот метод называется «безопасным».
    потому что он всегда пытается вернуть полезную строку вместо
    создание исключения. С другой стороны, safe_substitute () может быть
    что-либо кроме безопасного, так как он будет молча игнорировать искаженный
    шаблоны, содержащие висящие разделители, несовпадающие фигурные скобки или
    заполнители, которые не являются действительными идентификаторами Python.

    Экземпляры шаблона также предоставляют один атрибут общедоступных данных:

    шаблон

    Это объект, переданный в аргумент шаблона конструктора . В
    В общем, вы не должны изменять его, но доступ только для чтения не применяется.

    Вот пример использования шаблона:

     >>> из шаблона импорта строки
    >>> s = Template ('$ кому нравится $ what')
    >>> с.заменить (who = 'tim', what = 'kung pao')
    'Тим любит кунг пао'
    >>> d = dict (кто = 'tim')
    >>> Шаблон ('Дайте кому $ 100'). Replace (d)
    Отслеживание (последний вызов последний):
    ...
    ValueError: недопустимый заполнитель в строке: строка 1, столбец 11
    >>> Шаблон ('$ кому нравится $ what'). Replace (d)
    Отслеживание (последний вызов последний):
    ...
    KeyError: 'что'
    >>> Шаблон ('$ кому нравится $ what'). Safe_substitute (d)
    "Тим любит $ что"
     

    Расширенное использование: вы можете наследовать подклассы шаблона для настройки
    синтаксис-заполнитель, символ-разделитель или все используемое регулярное выражение
    для анализа строк шаблона.Для этого вы можете переопределить следующие атрибуты класса:

    • разделитель - это буквальная строка, описывающая заполнитель, вводящий
      разделитель. Значение по умолчанию - $ . Обратите внимание, что это должно быть , а не .
      регулярное выражение, так как реализация вызовет re.escape () для этого
      строка по мере необходимости.

    • idpattern - это регулярное выражение, описывающее шаблон для
      заполнители без фигурных скобок (фигурные скобки будут добавлены автоматически как
      подходящее).Значение по умолчанию - регулярное выражение.
      [_a-z] [_ a-z0-9] * .

    В качестве альтернативы вы можете предоставить весь шаблон регулярного выражения,
    переопределение атрибута класса шаблоном . Если вы это сделаете, значение должно быть
    объект регулярного выражения с четырьмя именованными группами захвата. Захват
    группы соответствуют приведенным выше правилам вместе с недопустимым заполнителем
    правило:

    • escape - Эта группа соответствует escape-последовательности, e.грамм. $$ , в
      шаблон по умолчанию.

    • с именем - эта группа соответствует имени заполнителя без скобок; это не должно
      включить разделитель в группу захвата.

    • в фигурных скобках - Эта группа соответствует имени заполнителя в фигурных скобках; должно
      не включать в группу захвата ни разделитель, ни фигурные скобки.

    • недопустимый - эта группа соответствует любому другому шаблону разделителя (обычно один
      разделитель), и он должен быть последним в регулярном выражении.

    Строковые методы Python - GeeksforGeeks

    Строка Python - это последовательность символов Юникода, заключенная в кавычки. В этой статье мы обсудим встроенную функцию, то есть функции, предоставляемые Python для работы со строками.

    Примечание: Каждый строковый метод не изменяет исходную строку, а возвращает новую строку с измененными атрибутами.

    Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.

    Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS . И чтобы начать свое путешествие по машинному обучению, присоединитесь к курсу Машинное обучение - базовый уровень

    Изменение регистра строк

    Следующие ниже функции используются для изменения регистра строк.

    • lower (): Преобразует все символы верхнего регистра в строке в нижний регистр
    • upper (): Преобразует все символы нижнего регистра в строке в верхний регистр
    • title (): Преобразовать строку в регистр заголовка

    Пример: Изменение регистра строк Python.

    Python3

    9006
    ГЕЕКИ ДЛЯ ГЕЕКОВ

    Преобразованная строка:
    компьютерщики для фанатов

    Преобразованная строка:
    Вундеркинды для гиков

    Исходная строка
    geeKs для geEkS

    Таблица методов строки Python

    текст = 'geeKs Для geEkS'

    print ( "\ nConverted 9000) 9000 (text.upper ())

    print ( "\ nConverted String:" )

    print (text.lower ()

    печать ( "\ nПреобразованная строка:" )

    печать (текст.title ())

    print ( "\ nOriginal String" )

    print (текст)

    Имя функции Описание
    capitalize () Преобразует первый символ строки в заглавную (заглавную) букву
    casefold () Реализует сопоставление строк без регистра.
    center () Дополняет строку указанным символом.
    count () Возвращает количество вхождений подстроки в строку.
    encode () Кодирует строки по указанной схеме кодирования
    endwith () Возвращает «Истина», если строка заканчивается заданным суффиксом.
    expandtabs () Задает количество пробел, который нужно заменить символом «\ t» в строке
    find () Возвращает наименьший индекс подстроки, если она найдена
    format () Форматирует строку для ее печати в console
    format_map () Форматирует указанные значения в строке с помощью словаря
    index () Возвращает позицию первого вхождения подстроки в строку
    isalnum () Проверяет, все ли символы в данной строке являются буквенно-цифровыми.
    isalpha () Возвращает «Истина», если все символы в строке являются алфавитными. ets
    isdecimal () Возвращает истину, если все символы в строке десятичные.
    isdigit () Возвращает «Истина», если все символы в строке являются цифрами
    isidentifier () Проверить, является ли строка допустимым идентификатором или нет.
    islower () Проверяет, все ли символы в строке строчные.
    isnumeric () Возвращает «Истина», если все символы в строке числовые.
    isprintable () Возвращает «Истина», если все символы в строке печатаются или строка пуста
    isspace () Возвращает «Истина», если все символы в строке являются пробельными символами
    istitle () Возвращает «Истина», если строка является строкой, заключенной в заголовок.
    isupper () Проверяет, все ли символы в строке в верхнем регистре
    join () Возвращает объединенную строку
    ljust () Слева выравнивает строку в соответствии с указанной шириной
    lower () Преобразует все символы верхнего регистра в строке в нижний регистр
    lstrip () Возвращает строку с удаленными ведущими символами
    maketrans () Возвращает таблицу перевода
    partition () Разбивает строку при первом появлении разделителя
    replace () Заменяет все вхождения подстроки другой подстрокой
    rfind () Возвращает наивысший индекс подстроки
    rindex () Возвращает наивысший индекс подстроки внутри строки
    rjust () Правое выравнивание строки в соответствии с заданная ширина
    rpartition () Разделить данную строку на три части
    rsplit () Разделить строку справа указанным разделителем
    rstrip () Удаляет завершающие символы
    splitlines () Разделить строки по границам строк
    startwith () Возвращает «Истина», если строка начинается с заданного префикса.
    strip () Возвращает строку с обоими начальные и конечные символы
    swapcase () Преобразует все символы верхнего регистра в нижний и наоборот
    title () Преобразовать строку в регистр заголовка
    translate () Изменить строку в соответствии с заданным сопоставления перевода
    upper () Преобразует все символы нижнего регистра в строке в u ppercase
    zfill () Возвращает копию строки с добавлением символов «0» с левой стороны строки

    Примечание: Для получения дополнительной информации о строках Python см. Учебное пособие по Python String. .

    Строковые функции в Python с примерами

    В этом руководстве описаны различные строковые (символьные) функции, используемые в Python. Для управления строками и значениями символов в python есть несколько встроенных функций. Это означает, что вам не нужно импортировать или иметь зависимость от какого-либо внешнего пакета для работы со строковым типом данных в Python. Это одно из преимуществ использования Python перед другими инструментами анализа данных. Работа со строковыми значениями очень распространена в реальном мире. Предположим, у вас есть полное имя клиента, и ваш менеджер попросил вас извлечь имя и фамилию клиента.Или вы хотите получить информацию обо всех продуктах, код которых начинается с QT.

    Список часто используемых строковых функций

    В приведенной ниже таблице показаны многие общие строковые функции, а также их описание и эквивалентная функция в MS Excel. Все мы используем MS Excel на своем рабочем месте и знакомы с функциями, используемыми в MS Excel. Сравнение строковых функций в MS EXCEL и Python поможет вам быстро изучить функции и проанализировать их перед собеседованием.

    Функция Описание MS EXCEL ФУНКЦИЯ
    mystring [: N] Извлечь N символов из начала строки. ЛЕВЫЙ ()
    mystring [-N:] Извлечь N символов из конца строки ПРАВЫЙ ()
    mystring [X: Y] Извлечь символы из середины строки, начиная с позиции X и заканчивая Y MID ()
    ул. Разделенная (sep = '') Разделенные струны
    str.replace (old_substring, new_substring) Заменить часть текста другой подстрокой ЗАМЕНА ()
    ул.нижний () Преобразование символов в нижний регистр НИЖНИЙ ()
    ул. Верхняя () Преобразовать символы в верхний регистр ВЕРХНИЙ ()
    str.contains ('pattern', case = False) Проверить соответствие шаблону (функция Pandas) Оператор SQL LIKE
    стр. Экстракт (регулярное_выражение) Возврат согласованных значений (функция Pandas)
    ул.count ('sub_string') Подсчитать наличие шаблона в строке
    ул. Найти () Возврат позиции подстроки или шаблона НАЙТИ ()
    str.isalnum () Проверить, состоит ли строка только из буквенно-цифровых символов
    ул. Нижняя () Проверить, все ли символы в нижнем регистре
    ул.isupper () Проверить, все ли символы в верхнем регистре
    ул. Числовая () Проверить, состоит ли строка только из цифровых символов
    ул. Пробел () Проверить, состоит ли строка только из пробелов
    лин () Вычислить длину строки LEN ()
    кот () Объединить строки (функция Pandas) СЦЕПИТЬ ()
    сепаратор.присоединиться (ул.) Конкатенация строк СЦЕПИТЬ ()

    Функции LEFT, RIGHT и MID

    Если вы являетесь промежуточным пользователем MS Excel, вы должны использовать функции LEFT, RIGHT и MID. Эти функции используются для извлечения N символов или букв из строки.

    1. Извлеките первые два символа из начала строки

    .

     mystring = "Привет, дружище, как дела?"
    mystring [: 2]
     
     Out [1]: 'Он'
     
    1. строка [start: stop: step] означает начало элемента от 0 (по умолчанию) до (stop-1), шаг на 1 (по умолчанию).
    2. mystring [: 2] эквивалентно mystring [0: 2]
    3. mystring [: 2] указывает Python извлечь первые 2 символа из строкового объекта mystring .
    4. Индексирование начинается с нуля, поэтому включает первый, второй элемент и исключая третий.

    2. Найдите два последних символа строки

     mystring [-2:]
     

    Приведенная выше команда возвращает p? . -2 запускает диапазон от второй последней позиции до максимальной длины строки.

    3. Найдите символы в середине строки

     mystring [1: 3]
     
     Out [1]: 'ey'
     

    mystring [1: 3] возвращает второй и третий символы. 1 относится ко второму символу, поскольку индекс начинается с 0.

    4. Как перевернуть строку?

     mystring [:: - 1]
     
     Out [1]: '? Pussaw, yddub yeH'
     

    -1 указывает Python начинать его с конца и увеличивать его на 1 справа налево.

    5. Как извлечь символы из строковой переменной в Pandas DataFrame?

    Для иллюстрации создадим поддельный фрейм данных.В приведенном ниже коде мы создаем фрейм данных с именем df , содержащий только 1 переменную с именем var1 .

    импортировать панд как pd
    df = pd.DataFrame ({"var1": ["A_2", "B_1", "C_2", "A_2"]})
    
      var1
    0 A_2
    1 B_1
    2 C_2
    3 A_2
     

    Для работы с текстовыми данными в Python Pandas Dataframe мы можем использовать атрибут str . Его можно использовать для нарезки символьных значений.

     df ['var1']. Str [0] 

    В этом случае мы получаем первый символ из переменной var1 . Смотрите результат, показанный ниже.

      Выход 
    0 А
    1 млрд
    2 С
    3 А
     

    Извлечь слова из строки

    Предположим, вам нужно вынуть слово (а) вместо символов из строки. Обычно мы рассматриваем одно пустое пространство как разделитель для поиска слов из строки.

    1. Найдите первое слово строки

     mystring.split () [0]
     
     Out [1]: 'Привет'
     

    Как это работает?

    1. Функция split () разбивает строку, используя пробел в качестве разделителя по умолчанию
    2. mystring.split () возвращает ['Привет', 'приятель', 'как дела?']
    3. 0 возвращает первый элемент или слово Привет

    2. Запятая как разделитель слов

     mystring.split (',') [0]
     
     Out [1]: 'Привет, приятель'
     

    3. Как извлечь последнее слово

     mystring.split () [- 1]
     
     Из [1]: 'wassup?' 

    4. Как извлечь слово в DataFrame

    Создадим фиктивный фрейм данных, состоящий из имен клиентов, и назовем его переменной custname .

    mydf = pd.DataFrame ({"custname": ["Priya_Sehgal", "David_Stevart", "Kasia_Woja", "Sandy_Dave"]})
     
            custname
    0 Priya_Sehgal
    1 David_Stevart
    2 Kasia_Woja
    3 Сэнди_Дэйв
     
    #Первое слово
    mydf ['fname'] = mydf ['custname']. str.split ('_'). str [0]
    
    #Последнее слово
    mydf ['lname'] = mydf ['custname']. str.split ('_'). str [1]
     

    Подробное объяснение

    1. str.split () аналогичен split () . Он используется для активации функции разделения в фрейме данных pandas в Python.
    2. В приведенном выше коде мы создали два новых столбца с именами fname и lname , в которых хранятся имя и фамилия.
    3.   Выход 
              custname fname lname
      0 Priya_Sehgal Прия Сегал
      1 David_Stevart Дэвид Стеварт
      2 Kasia_Woja Касия Воя
      3 Sandy_Dave Сэнди Дэйв
       

    Оператор SQL LIKE в Pandas DataFrame

    В SQL оператор LIKE используется для определения того, совпадает ли символьная строка с шаблоном или содержит ли он.Мы можем реализовать аналогичную функциональность в Python, используя функцию str.contains () .

    df2 = pd.DataFrame ({"var1": ["AA_2", "B_1", "C_2", "a_2"],
                        "var2": ["X_2", "Y_1", "Z_2", "X2"]})
     
       var1 var2
    0 AA_2 X_2
    1 B_1 Y_1
    2 C_2 Z_2
    3 а_2 Х2
     

    Как найти строки, содержащие A или B в переменной var1?

     df2 ['var1']. Str.contains ('A | B') 

    str.contains (pattern) используется для сопоставления с шаблоном в Pandas Dataframe.

      Выход 
    0 Верно
    1 Верно
    2 ложно
    3 ложь
     

    Приведенная выше команда возвращает FALSE для четвертой строки, поскольку функция чувствительна к регистру. Чтобы игнорировать чувствительность к регистру, мы можем использовать параметр case = False . См. Рабочий пример ниже.

     df2 ['var1']. Str.contains ('A | B', case = False) 

    Как отфильтровать строки, содержащие определенный шаблон?

    В следующей программе мы просим Python выделить данные с условием - содержать символьные значения A или B. - это токен регулярного выражения, что означает начало с определенного элемента.

      var1 var2
    1 B_1 Y_1
    2 C_2 Z_2
    3 а_2 Х2
     

    Найти позицию определенного символа или ключевого слова

    str.find (шаблон) используется для поиска позиции подстроки. В этом случае подстрокой является '_'.

    df2 ['var1']. str.find ('_')
     
    0 2
    1 1
    2 1
    3 1
     

    Заменить подстроку

    str.replace (old_text, new_text, case = False) используется для замены определенного символа (ов) или шаблона некоторым новым значением или шаблоном.В приведенном ниже коде мы заменяем _ на - в переменной var1.

    df2 ['var1']. str.replace ('_', '-', case = False)
     
      Выход 
    0 AA - 2
    1 В - 1
    2 С - 2
    3 А - 2
     

    Мы также можем сложные шаблоны, подобные следующей программе. + означает, что элемент встречается один или несколько раз. В этом случае алфавит встречается 1 или более раз.

    df2 ['var1']. str.replace ('[A-Z] + _', 'X', case = False)
     
    0 X2
    1 х 1
    2 х 2
    3 X2
     

    Найдите длину строки

    len (строка) используется для вычисления длины строки.Во фрейме данных pandas вы можете применить str.len () для того же.

    df2 ['var1']. str.len ()
     
      Выход 
    0 4
    1 3
    2 3
    3 3
     

    Чтобы найти количество вхождений определенного символа (скажем, сколько раз «A» появляется в каждой строке), вы можете использовать функцию str.count (pattern) .

     df2 ['var1']. Str.count ('A') 

    Преобразование в нижний и верхний регистр

    str.lower () и str.upper () функции используются для преобразования строки в значения нижнего и верхнего регистра.

    # Преобразовать в нижний регистр
    mydf ['custname']. str.lower ()
    
    # Преобразовать в верхний регистр
    mydf ['custname']. str.upper ()
     

    Удалить начальные и конечные пробелы

    1. str.strip () удаляет как начальные, так и конечные пробелы.
    2. str.lstrip () удаляет ведущие пробелы (в начале).
    3. str.rstrip () удаляет конечные пробелы (в конце).
    df1 = pd.DataFrame ({'y1': ['jack', 'jill', 'jesse', 'frank']})
    df1 ['оба'] = df1 ['y1'].str.strip ()
    df1 ['left'] = df1 ['y1']. str.lstrip ()
    df1 ['right'] = df1 ['y1']. str.rstrip ()
     
            y1 оба слева направо
    0 джек джек джек джек
    1 джилл джилл джилл джилл
    2 Джесси Джесси Джесси Джесси
    3 фрэнк фрэнк фрэнк
     

    Преобразование числа в строку

    С помощью функции str () вы можете преобразовать числовое значение в строку.

    myvariable = 4
    mystr = str (моя переменная)
     

    Конкатенация или соединение строк

    Просто используя + , вы можете объединить два строковых значения.

    x = "Дипаншу"
    y = "Бхалла"
    х + у
     
    DeepanshuBhalla
     

    Если вы хотите добавить пробел между двумя строками, вы можете использовать это - x + '' + y возвращает Deepanshu Bhalla
    Предположим, у вас есть список, содержащий несколько строковых значений, и вы хотите их объединить. Вы можете использовать функцию join () .

    string0 = ['Рам', 'Кумар', 'Сингх']
    '' .join (строка0)
     
      Выход 
    Рам Кумар Сингх
     

    Предположим, вы хотите объединить или объединить два столбца фрейма данных pandas.

    mydf ['fullname'] = mydf ['fname'] + '' + mydf ['lname']

    ИЛИ

    mydf ['fullname'] = mydf [['fname', 'lname']]. Apply (лямбда x: '' .join (x), axis = 1)

         custname fname lname полное имя
    0 Priya_Sehgal Priya Sehgal Priya Sehgal
    1 David_Stevart Дэвид Стеварт Дэвид Стеварт
    2 Kasia_Woja Касиа Воя Касиа Воя
    3 Sandy_Dave Сэнди Дэйв Сэнди Дэйв
     

    Оператор SQL IN в пандах

    Мы можем использовать функцию isin (list) , чтобы включить несколько значений в наши критерии фильтрации или подмножества.

    mydata = pd.DataFrame ({'product': ['A', 'B', 'B', 'C', 'C', 'D', 'A']})
    mydata [mydata ['продукт']. isin (['A', 'B'])]
     
      продукт
    0 А
    1 млрд
    2 млрд
    6 А
     

    Как применить критерии НЕ при выборе нескольких значений?

    Мы можем использовать знак ~ , чтобы указать питону, что нужно отрицать условие.

    mydata [~ mydata ['продукт']. isin (['A', 'B'])]
     

    Извлечь определенный шаблон из строки

    str.extract (r'regex-pattern) используется для этой задачи.[A-Z] _) '). Dropna ()

    Строковые функции Python - AskPython

    capitalize () Преобразует первый символ строки в верхний регистр str_name.capitalize ()
    casefold () Преобразует любую строку в нижний регистр независимо от его случая str_name.casefold ()
    center () Используется для выравнивания строки по центру str_name.center (Длина, символ)
    count () Используется для подсчета количества раз, когда определенное значение появляется в строке str_name.count (value, start, end)
    endwith () Проверяет, заканчивается ли строка указанным значением, затем возвращает True str_name.endswith (value, start, end)
    find () Используется для определения наличия указанное значение в строке str_name.find (значение, начало, конец)
    index () Используется для поиска первого вхождения указанного значения в строке str_name.index (value, start, end)
    isalnum () Он проверяет, все ли символы являются буквенно-цифровыми, затем возвращает True str_name.isalnum ()
    isalpha () Проверяет, все ли символы являются алфавитными (az), затем возвращает True str_name.isalpha ()
    isdecimal () Он проверяет, все ли символы являются десятичными (0-9), затем возвращает True str_name.isdecimal ()
    isdigit () Проверяет, если все символы являются цифрами, затем возвращает True str_name.isdigit ()
    islower () Он проверяет, все ли символы в нижнем регистре, затем возвращает True str_name.islower ()
    isnumeric () Он проверяет, все ли символы являются числовыми (0-9), затем возвращает True str_name.isnumeric ()
    isspace () Он проверяет, все ли символы являются пробелами, затем возвращает True str_name.isspace ()
    isupper () Проверяет, все ли символы находятся в верхний регистр затем возвращает True str_name.isupper ()
    lower () Он используется для преобразования всех символов в нижний регистр str_name.lower ()
    partition () It используется для разделения строки на кортеж из трех элементов str_name.partition (value)
    replace () Используется для замены указанного слова или фразы другим словом или фразой в строке str_name.replace (oldvalue, newvalue, count)
    split () Используется для разделения строки на список str_name.split (separator, maxsplit)
    splitlines () Используется для разделения строки и составления ее списка. Разрывается при разрыве строки. str_name.splitlines (keeplinebreaks)
    startwith () Проверяет, начинается ли строка с указанного значения, затем возвращает True str_name.startswith (value, start, end)
    strip () Используется для удаления символов, указанных в аргументе, с обоих концов. str_name.strip (символы )
    swapcase () Используется для замены строки верхнего регистра на нижний регистр или наоборот. str_name.swapcase ()
    title () Преобразует начальную букву каждого слова в верхний регистр str_name.title ()
    upper () Используется для преобразования всех символов в строке в верхний регистр str_name.upper ()

    Строковые функции Python с примерами

    Строки есть везде! При взаимодействии с пользователем, то есть при получении ввода или при отображении вывода , вы будете использовать строки чаще, чем любую другую структуру данных.

    В этой статье вы узнаете, что такое строки Python и как можно манипулировать и использовать их в своей программе Python с строковыми функциями Python .

    Строки в Python

    Односимвольный или последовательность символов идентифицируются как строки в Python. Строки - это одна из примитивных структур данных в Python.

    Очень важным моментом при работе со строками является то, что строки «неизменяемы» .То есть, как только мы создаем строку, мы не можем изменить ее значение .

    Итак, чтобы манипулировать строками, нам нужно создать новых строк по ходу работы, в то время как исходные строки остаются неизменными .

    Как определить строку Python?

    Мы всегда заключаем строку в кавычки , одинарные кавычки или двойные кавычки . В строке может быть сколько угодно символов, при условии, что памяти достаточно .

    Например,

     >>> "Это строка"
     

    Выход

    «Это строка»

     >>> «Это строка» 

    Выход

    «Это строка»

    Python также допускает пустую строку в Python.

     >>> '' 

    Выход

     >>>" "

    Выход

    Мы можем присвоить строку переменной с помощью оператора присваивания .

     >>> x = "Техвидван"
    >>> print (x)
     

    Вывод

    Techvidvan

    Python String Indexing

    Напомним, что строка - это просто последовательность из символов. Как и любая другая последовательность в Python, строки также поддерживают индексирование . То есть мы можем получить доступ к отдельным символам строки, используя числовой индекс .

    Python начинает отсчет с нуля , когда дело доходит до нумерации позиций индекса последовательности.Таким образом, первый символ строки имеет индекс 0 , второй символ - индекс 1 и так далее. У нас также есть отрицательных индекса , которые отсчитываются от справа налево , начиная с –1 .

    При индексировании используется обозначение в квадратных скобках . Вот как мы получаем доступ к символу с индексом ind строки my_string :

     my_string [ind] 

    Например,

     >>> say = "Привет от Techvidvan!"
    >>> сказать [0]
    'ЧАС'
    >>> say [3]
    'f'
    >>> say [5]
    'о'
    >>> say [-1]
    '!'
    >>> скажи [-3]
    'а'
    >>> скажи [-5]
    'd'
    >>>
     

    Python String Slicing

    Мы можем расширить обозначение квадратных скобок , чтобы получить доступ к подстроке (фрагменту) строки.Мы можем указать start , stop и step (необязательно) в квадратных скобках как:

     my_string [start: stop: step] 
    • start: Это индекс, откуда срез начинается. Значение по умолчанию - 0 .
    • stop: Это индекс, на котором останавливается срез. Символ в этом индексе не включается в срез. Значение по умолчанию - длины строки .
    • шаг: Определяет количество прыжков, которые нужно сделать при переходе от начала до конца.Принимает значение по умолчанию 1 .

    Например,

     >>> say = "Привет от Techvidvan!"
    >>> say [3: 6]
    "от"
    >>> say [: 10]
    "Привет от Те"
    >>> скажи [4:]
    «ROM Techvidvan!»
    >>> скажи [1: 11: 3]
    'ir c'
    >>> say [:: 2]
    'H rmTcvda!'
    >>> say [:: - 1]
    '! navdivhceT morf iH'
    >>>
     

    Python Строковые операции

    1. Оператор Python + - Оператор конкатенации строк

    Оператор + объединяет всех строк операндов и возвращает объединенную строку .

    Например,

     >>> x = "Это"
    >>> y = "Python"
    >>> z = x + y + '.'
    >>> print (z)
     

    Вывод

    Это Python.

    2. Оператор Python * - Оператор репликации строки

    Оператор * принимает два операнда - строку и целое число . Затем он возвращает новой строки , которая представляет собой количество повторений входной строки.Целочисленный операнд указывает количество повторений.

    Например,

     >>> x = 3 * "Привет!"
    >>> print (x)
     

    Выход

    Привет! Привет! Привет!

     >>> y = "Вперед!" * 3
    >>> print (y)
     

    Выход

    Вперед! Вперед! Вперед!

    Строковые методы в Python

    Все в Python - это объект . Строка тоже является объектом. Python предоставляет нам различные методы для вызова строкового объекта .

    Давайте посмотрим на каждую из них.

    Обратите внимание, что ни один из этих методов не изменяет фактическую строку. Вместо этого они возвращают копию строки , которая является измененной версией строки.

    1. s.capitalize () в Python

    Делает строку с заглавной буквы

     >>> s = "heLLo BuDdY"
    >>> s2 = s.capitalize ()
    >>> печать (s2)
     

    Выход

    Привет, дружище

    2.s.lower () в Python

    Преобразует все буквенные символы в нижний регистр

     >>> s = "heLLo BuDdY"
    >>> s2 = s.lower ()
    >>> печать (s2)
     

    Выходные данные

    hello buddy

    3. s.upper () в Python

    Преобразует все буквенные символы в верхний регистр

     >>> s = "heLLo BuDdY"
    >>> s2 = s.upper ()
    >>> печать (s2)
     

    Выход

    HELLO BUDDY

    4.s.title () в Python

    Преобразует первую букву каждого слова в заглавные , а остальные буквы в строчные

     >>> s = "heLLo BuDdY"
    >>> s2 = s.title ()
    >>> печать (s2)
     

    Вывод

    Hello Buddy

    5. s.swapcase () в Python

    Меняет местами регистр всех буквенных символов.

     >>> s = "HELLO BuDdY"
    >>> s2 = s.swapcase ()
    >>> печать (s2)
     

    Вывод

    ‘HEllO bUdDy’

    6.s.count (

    [, [, ]])

    Возвращает количество раз, когда встречается в секундах.

    Например,

     >>> s = 'Dread Thread Spread'
    >>> s.count ('e')
    3
    >>> s.count ('реа')
    3
    >>> s.count ('e', 4, 18)
    2
    >>> 
    7. s.find (

    [, [, ]])

    Возвращает индекс первого вхождения в s.Возвращает -1, если подстрока отсутствует в строке.

    Например,

     >>> s = 'Dread Thread Spread'
    >>> s.find ('Thr')
    6
    >>> s.find ('реа')
    1
    >>> s.find ('реа', 4, 18)
    8
    >>> s.find ('х')
    -1
    >>>
     
    8. s.isalnum () в Python

    Возвращает True, если все символы в строке буквенно-цифровых , то есть букв или чисел .

    Например,

     >>> s = "Tech50"
    >>> с.isalnum ()
    Правда
    >>> s = "Техника"
    >>> s.isalnum ()
    Правда
    >>> s = "678"
    >>> s.isalnum ()
    Правда
     
    9. Python s.isalpha ()

    Возвращает True, если все символы в строке алфавита .

    Например,

     >>> s = "Techvidvan"
    >>> s2 = "Tech50"
    >>> s.isalpha ()
    Правда
    >>> s2.isalpha ()
    Ложь
    >>>
     
    10. Python s.isdigit ()

    Возвращает True, если все символы в строке числа .

    Например,

     >>> s1 = "Tech50"
    >>> s2 = "56748"
    >>> s1.isdigit ()
    Ложь
    >>> s2.isdigit ()
    Правда
    >>>
     
    11. s.islower ()

    Возвращает True, если все алфавиты в строке строчные .

    Например,

     >>> s1 = "Tech"
    >>> s2 = "технология"
    >>> s1.islower ()
    Ложь
    >>> s2.islower ()
    Правда
    >>>
     
    12. s.isupper ()

    Возвращает True, если все алфавиты в строке прописные .

    Например,

     >>> s1 = "Tech"
    >>> s2 = "ТЕХ"
    >>> s1.isupper ()
    Ложь
    >>> s2.isupper ()
    Правда
     
    13. s.lstrip ([

    ])

    Удаляет ведущих символа из строки. Удаляет ведущих пробелов , если не указан аргумент .

    14. s.rstrip ([

    ])

    Удаляет завершающих символа из строки.Удаляет завершающих пробелов , если не указан аргумент .

    15. s.strip ([

    ])

    Удаляет начальных и конечных символа из строки. Удаляет начальных и конечных пробелов , если не указан аргумент .

    Пример lstrip (), rstrip () и strip ():

     >>> s = "Techvidvan"
    >>> s.lstrip ()
    'Техвидван'
    >>> с.rstrip ()
    'Техвидван'
    >>> s.strip ()
    'Техвидван'
    >>>
     
    16. s.join (

    )

    Объединяет элементы итеративного элемента в одну строку . Здесь s - строка разделителя .

    Пример

     >>> s1 = '' .join (['Мы', 'есть', 'Кодеры'])
    >>> печать (s1)
    Мы кодеры
    >>> s2 = ':'. join (['Мы', 'есть', 'Кодеры'])
    >>> печать (s2)
    Мы: кодеры
    >>>
     
    17.s.split (sep = None, maxspit = -1)

    Разбивает строку на список из подстрок на основе sep . Если вы не передадите значение в sep, оно будет разбито на основе пробелов .

    Пример

     >>> l = 'we are coders'.split ()
    >>> l
    ['мы', 'есть', 'кодеры']
    >>> l = 'мы - кодеры'. split ('e')
    >>> l
    ['w', 'ar', 'cod', 'rs']
     

    Резюме

    В этой статье мы узнали, что такое строки Python .Мы также узнали, как найти строку в программе Python.

    Затем мы увидели способы доступа к к отдельному символу или к фрагменту символов из строки. Мы узнали о различных операциях , которые мы можем выполнять со строками в Python.

    Наконец, мы увидели, как манипулировать строками с помощью встроенных методов .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *