Python длина строки: Строки. Функции и методы строк

Содержание

Строки. Функции и методы строк

S = 'str'; S = "str"; S = '''str'''; S = """str"""Литералы строк
S = "s\np\ta\nbbb"Экранированные последовательности
S = r"C:\temp\new"Неформатированные строки (подавляют экранирование)
S = b"byte"Строка байтов
S1 + S2Конкатенация (сложение строк)
S1 * 3Повторение строки
S[i]Обращение по индексу
S[i:j:step]Извлечение среза
len(S)Длина строки
S.find(str, [start],[end])Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.rfind(str, [start],[end])Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.index(str, [start],[end])Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.rindex(str, [start],[end])Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.replace(шаблон, замена)Замена шаблона
S.split(символ)Разбиение строки по разделителю
S.isdigit()Состоит ли строка из цифр
S.isalpha()Состоит ли строка из букв
S.isalnum()Состоит ли строка из цифр или букв
S.islower()Состоит ли строка из символов в нижнем регистре
S.isupper()Состоит ли строка из символов в верхнем регистре
S.isspace()Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('\f'), "новая строка" ('\n'), "перевод каретки" ('\r'), "горизонтальная табуляция" ('\t') и "вертикальная табуляция" ('\v'))
S.istitle()Начинаются ли слова в строке с заглавной буквы
S.upper()Преобразование строки к верхнему регистру
S.lower()Преобразование строки к нижнему регистру
S.startswith(str)Начинается ли строка S с шаблона str
S.endswith
(str)
Заканчивается ли строка S шаблоном str
S.join(список)Сборка строки из списка с разделителем S
ord(символ)Символ в его код ASCII
chr(число)Код ASCII в символ
S.capitalize()Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.center(width, [fill])Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.count(str, [start],[end])Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.expandtabs([tabsize])Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.lstrip([chars])Удаление пробельных символов в начале строки
S.rstrip([chars])Удаление пробельных символов в конце строки
S.strip([chars])
Удаление пробельных символов в начале и в конце строки
S.partition(шаблон)Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.rpartition(sep)Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.swapcase()Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.title()Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.zfill(width)Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.ljust(width, fillchar=" ")Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.rjust(width, fillchar=" ")Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.format(*args, **kwargs)Форматирование строки

Найти длину строки в питоне (4 способа)

Python, Программы Python

Строки в Python являются неизменяемыми последовательностями кодовых точек Unicode. По заданной строке нам нужно найти ее длину.

Примеры:

Input : 'hello world !'
Output : 12

Input : ' h e l   l  o '
Output :14

Методы:

  • Используя встроенную функцию лен. Встроенная функция len возвращает количество элементов в контейнере.

      

    str = "geeks"

    print(len(str))

    Выход:

    5
    
  • Использование для цикла и в операторе. Строка может быть повторена, непосредственно в цикле for. Ведение подсчета количества итераций приведет к длине строки.

      

    def findLen(str):

        counter = 0    

        for i in str:

            counter += 1

        return counter

      

      

    str = "geeks"

    print(findLen(str))

    Выход:

    5
    
  • Использование цикла while и Slicing. Мы нарезаем строку, делая ее короче на 1 на каждой итерации, в итоге получим пустую строку. Это когда цикл останавливается. Ведение подсчета количества итераций приведет к длине строки.

      

    def findLen(str):

        counter = 0

        while

    str[counter:]:

            counter += 1

        return counter

      

    str = "geeks"

    print(findLen(str))

    Выход:

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

      

    def findLen(str):

        if not str:

            return 0

        else:

            some_random_str = 'py'

            return ((some_random_str).join(str)).count(some_random_str) + 1

      

    str = "geeks"

    print(findLen(str))

    Выход:

    5
    

Рекомендуемые посты:

Найти длину строки в питоне (4 способа)

0.00 (0%) 0 votes

Работа со строками в Python

Работа со строками в Python

В этой статье, мы познакомимся с базовыми основами работы со строками в Python. Строка (string) содержит в себе набор символов в кодировке ASCII и относится к неизменяемому типу данных.

Создание строки в Python

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

1) В одинарных кавычках (апострофы)

'одинарные кавычки в строке'

2) В двойных кавычках

"двойные кавычки в строке"

3) В тройных одинарных или двойных кавычках

'''строка_1
строка_2
строка_3'''
'строка_1\nстрока_2\nстрока_23\n' // после нажатия ENTER

print('строка_1\nстрока_2\nстрока_23\n')

// выведет на экране
строка_1
строка_2
строка_3

Последний способ применяется для создания многострочной строки. Когда часть строки нужно перенести на новую строку. Внутри программы на месте переноса строк, Python добавляет символ \n. При выводе на экран многострочной строки, в параметрах print('строка_1\nстрока_2\nстрока_23\n'), передается вся эта конструкция.

Нельзя смешивать разновидности кавычек в одной строке, если открыли строку двойной кавычкой, то и закройте строку так же двойной кавычкой.

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

new_str = 'переменной присвоили строку'

В Python допускается создание пустой строки.

empty = ''

Конкатенация строк в Python

Операция конкатенация (concatenate) объединяет несколько строк в одну.

a = 'con'
b = 'cat'
c = 'enate'
a + b + c
'concatenate'

Если надо объединить строки с пробелами, то добавляем пробел в кавычках:

d = 'конкатенация'
f = 'строк'
d + ' ' + f
'конкатенация строк'

Как преобразовать число в строку

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

'строка' + 10 // неправильно
'строка' + str(10) // правильно
'строка10' // результат

Повторение строки в Python

Как быстро выполнить операцию повторения строки? Очень просто - умножить строку на число повторений.

multi = 'ой-'
print(multi*3)
ой-ой-ой

Длина строки в Python

Операция по вычислению длины строки, довольно часто применяется в программировании. Название функции len - сокращенное от анг. слова length (длина). Функция len() вычисляет количество символов в строке вместе с пробелами. Буквы, знаки пунктуации, пробелы в строке - все это символы.

>>> d_str = 'Длина строки'
>>> len(d_str)
12 // результат

Поиск подстроки в строке в Python

С помощью команды in, можно проверить содержится ли подстрока (символ/ы) в строке, ответом будет истина / ложь.

>>> sub_str = 'поиск подстроки'
>>> 'к' in sub_str
True

>>> s = 'найти подстроку'
>>> 'ю' in s
False


Сравнение строк в Python

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

Утверждение, что:

'xy' > 'abc'
True // верно

Здесь у вас наверняка возник вопрос: "Ведь буква "a" стоит выше по алфавиту, чем "x"? В чем подвох? Выведем кодировку первых символов у двух строк. Число 120 явно больше, чем 97.

>>> ord('x')
120
>>> ord('a')
97

Строка из заглавных букв, всегда будет меньше строки из маленьких букв. Поскольку кодовые значения больших букв меньше, чем у маленьких.

Заключение

Я слышал не один раз от разных людей, что программирование они начинали изучать с JavaScript или PHP и не сильно в этом преуспели. И сразу после первой неудачной попытки, поставили крест на программировании, посчитали, что нет у них способностей к этому. Позже, они признались, что непонятные вещи в JavaScript / PHP, стали понятными в процессе изучения Python.

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

  • Работа со строками в Python Создано 28.10.2019 10:23:57
  • Работа со строками в Python Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Строки. Функции и методы строк — Документация Python Summary 1
# Литералы строк
S = 'str'; S = "str"; S = '''str'''; S = """str"""
# Экранированные последовательности
S = "s\np\ta\nbbb"
# Неформатированные строки (подавляют экранирование)
S = r"C:\temp\new"
# Строка байтов
S = b"byte"
# Конкатенация (сложение строк)
S1 + S2
# Повторение строки
S1 * 3
# Обращение по индексу
S[i]
# Извлечение среза
S[i:j:step]
# Длина строки
len(S)
# Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.find(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.rfind(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.index(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.rindex(str, [start],[end])
# Замена шаблона
S.replace(шаблон, замена)
# Разбиение строки по разделителю
S.split(символ)
# Состоит ли строка из цифр
S.isdigit()
# Состоит ли строка из букв
S.isalpha()
# Состоит ли строка из цифр или букв
S.isalnum()
# Состоит ли строка из символов в нижнем регистре
S.islower()
# Состоит ли строка из символов в верхнем регистре
S.isupper()
# Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('\f'), "новая строка" ('\n'), "перевод каретки" ('\r'), "горизонтальная табуляция" ('\t') и "вертикальная табуляция" ('\v'))
S.isspace()
# Начинаются ли слова в строке с заглавной буквы
S.istitle()
# Преобразование строки к верхнему регистру
S.upper()
# Преобразование строки к нижнему регистру
S.lower()
# Начинается ли строка S с шаблона str
S.startswith(str)
# Заканчивается ли строка S шаблоном str
S.endswith(str)
# Сборка строки из списка с разделителем S
S.join(список)
# Символ в его код ASCII
ord(символ)
# Код ASCII в символ
chr(число)
# Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.capitalize()
# Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.center(width, [fill])
# Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.count(str, [start],[end])
# Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.expandtabs([tabsize])
# Удаление пробельных символов в начале строки
S.lstrip([chars])
# Удаление пробельных символов в конце строки
S.rstrip([chars])
# Удаление пробельных символов в начале и в конце строки
S.strip([chars])
# Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.partition(шаблон)
# Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.rpartition(sep)
# Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.swapcase()
# Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.title()
# Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.zfill(width)
# Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.ljust(width, fillchar=" ")
# Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.rjust(width, fillchar=" ")
41 вопрос о работе со строками в Python / Блог компании RUVDS.com / Хабр
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.

Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.

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



1. Как проверить два объекта на идентичность?


Оператор is возвращает True в том случае, если в две переменные записана ссылка на одну и ту же область памяти. Именно об этом идёт речь при разговоре об «идентичности объектов».

Не стоит путать is и ==. Оператор == проверяет лишь равенство объектов.

animals           = ['python','gopher']
more_animals      = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False

Обратите внимание на то, что animals и even_more_animals не идентичны, хотя и равны друг другу.

Кроме того, существует функция id(), которая возвращает идентификатор адреса памяти, связанного с именем переменной. При вызове этой функции для двух идентичных объектов будет выдан один и тот же идентификатор.

name = 'object'
id(name)
#=> 4408718312

2. Как проверить то, что каждое слово в строке начинается с заглавной буквы?


Существует строковый метод istitle(), который проверяет, начинается ли каждое слово в строке с заглавной буквы.
print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False

3. Как проверить строку на вхождение в неё другой строки?


Существует оператор in, который вернёт True в том случае, если строка содержит искомую подстроку.
print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False

4. Как найти индекс первого вхождения подстроки в строку?


Есть два метода, возвращающих индекс первого вхождения подстроки в строку. Это — find() и index(). У каждого из них есть определённые особенности.

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

'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1

Метод index() в подобной ситуации выбрасывает ошибку ValueError.
'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found

5. Как подсчитать количество символов в строке?


Функция len() возвращает длину строки.
len('The first president of the organization..') #=> 41

6. Как подсчитать то, сколько раз определённый символ встречается в строке?


Ответить на этот вопрос нам поможет метод count(), который возвращает количество вхождений в строку заданного символа.
'The first president of the organization..'.count('o') #=> 3

7. Как сделать первый символ строки заглавной буквой?


Для того чтобы это сделать, можно воспользоваться методом capitalize().
'florida dolphins'.capitalize() #=> 'Florida dolphins'

8. Что такое f-строки и как ими пользоваться?


В Python 3.6 появилась новая возможность — так называемые «f-строки». Их применение чрезвычайно упрощает интерполяцию строк. Использование f-строк напоминает применение метода format().

При объявлении f-строк перед открывающей кавычкой пишется буква f.

name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'

9. Как найти подстроку в заданной части строки?


Метод index() можно вызывать, передавая ему необязательные аргументы, представляющие индекс начального и конечного фрагмента строки, в пределах которых и нужно осуществлять поиск подстроки.
'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23

Обратите внимание на то, что вышеприведённая конструкция возвращает 23, а не 0, как было бы, не ограничь мы поиск.
'the happiest person in the whole wide world.'.index('the')
#=> 0

10. Как вставить содержимое переменной в строку, воспользовавшись методом format()?


Метод format() позволяет добиваться результатов, сходных с теми, которые можно получить, применяя f-строки. Правда, я полагаю, что использовать format() не так удобно, так как все переменные приходится указывать в качестве аргументов format().
difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'

11. Как узнать о том, что в строке содержатся только цифры?


Существует метод isnumeric(), который возвращает True в том случае, если все символы, входящие в строку, являются цифрами.
'80000'.isnumeric() #=> True

Используя этот метод, учитывайте то, что знаки препинания он цифрами не считает.
'1.0'.isnumeric() #=> False

12. Как разделить строку по заданному символу?


Здесь нам поможет метод split(), который разбивает строку по заданному символу или по нескольким символам.
'This is great'.split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']

13. Как проверить строку на то, что она составлена только из строчных букв?


Метод islower() возвращает True только в том случае, если строка составлена исключительно из строчных букв.
'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False

14. Как проверить то, что строка начинается со строчной буквы?


Сделать это можно, вызвав вышеописанный метод islower() для первого символа строки.
'aPPLE'[0].islower() #=> True

15. Можно ли в Python прибавить целое число к строке?


В некоторых языках это возможно, но Python при попытке выполнения подобной операции будет выдана ошибка TypeError.
'Ten' + 10 #=> TypeError

16. Как «перевернуть» строку?


Для того чтобы «перевернуть» строку, её можно разбить, представив в виде списка символов, «перевернуть» список, и, объединив его элементы, сформировать новую строку.
''.join(reversed("hello world"))
#=> 'dlrow olleh'

17. Как объединить список строк в одну строку, элементы которой разделены дефисами?


Метод join() умеет объединять элементы списков в строки, разделяя отдельные строки с использованием заданного символа.
'-'.join(['a','b','c'])
#=> 'a-b-c'

18. Как узнать о том, что все символы строки входят в ASCII?


Метод isascii() возвращает True в том случае, если все символы, имеющиеся в строке, входят в ASCII.
print( 'Â'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True

19. Как привести всю строку к верхнему или нижнему регистру?


Для решения этих задач можно воспользоваться методами upper() и lower(), которые, соответственно, приводят все символы строк к верхнему и нижнему регистрам.
sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'

20. Как преобразовать первый и последний символы строки к верхнему регистру?


Тут, как и в одном из предыдущих примеров, мы будем обращаться к символам строки по индексам. Строки в Python иммутабельны, поэтому мы будем заниматься сборкой новой строки на основе существующей.
animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'

21. Как проверить строку на то, что она составлена только из прописных букв?


Имеется метод isupper(), который похож на уже рассмотренный islower(). Но isupper() возвращает True только в том случае, если вся строка состоит из прописных букв.
'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True

22. В какой ситуации вы воспользовались бы методом splitlines()?


Метод splitlines() разделяет строки по символам разрыва строки.
sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']

23. Как получить срез строки?


Для получения среза строки используется синтаксическая конструкция следующего вида:
string[start_index:end_index:step]

Здесь step — это шаг, с которым будут возвращаться символы строки из диапазона start_index:end_index. Значение step, равное 3, указывает на то, что возвращён будет каждый третий символ.
string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' (каждый 2-й символ)

24. Как преобразовать целое число в строку?


Для преобразования числа в строку можно воспользоваться конструктором str().
str(5) #=> '5'

25. Как узнать о том, что строка содержит только алфавитные символы?


Метод isalpha() возвращает True в том случае, если все символы в строке являются буквами.
'One1'.isalpha() #=> False
'One'.isalpha() #=> True

26. Как в заданной строке заменить на что-либо все вхождения некоей подстроки?


Если обойтись без экспорта модуля, позволяющего работать с регулярными выражениями, то для решения этой задачи можно воспользоваться методом replace().
sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'

27. Как вернуть символ строки с минимальным ASCII-кодом?


Если взглянуть на ASCII-коды элементов, то окажется, например, что прописные буквы имеют меньшие коды, чем строчные. Функция min() возвращает символ строки, имеющий наименьший код.
min('strings') #=> 'g'

28. Как проверить строку на то, что в ней содержатся только алфавитно-цифровые символы?


В состав алфавитно-цифровых символов входят буквы и цифры. Для ответа на этот вопрос можно воспользоваться методом isalnum().
'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False

29. Как удалить пробелы из начала строки (из её левой части), из её конца (из правой части), или с обеих сторон строки?


Здесь нам пригодятся, соответственно, методы lstrip(), rstrip() и strip().
string = '  string of whitespace    '
string.lstrip() #=> 'string of whitespace    '
string.rstrip() #=> '  string of whitespace'
string.strip() #=> 'string of whitespace'

30. Как проверить то, что строка начинается с заданной последовательности символов, или заканчивается заданной последовательностью символов?


Для ответа на этот вопрос можно прибегнуть, соответственно, к методам startswith() и endswith().
city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False

31. Как закодировать строку в ASCII?


Метод encode() позволяет кодировать строки с использованием заданной кодировки. По умолчанию используется кодировка utf-8. Если некий символ не может быть представлен с использованием заданной кодировки, будет выдана ошибка UnicodeEncodeError.
'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Â'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)

32. Как узнать о том, что строка включает в себя только пробелы?


Есть метод isspace(), который возвращает True только в том случае, если строка состоит исключительно из пробелов.
''.isspace() #=> False
' '.isspace() #=> True
'   '.isspace() #=> True
' the '.isspace() #=> False

33. Что случится, если умножить некую строку на 3?


Будет создана новая строка, представляющая собой исходную строку, повторённую три раза.
'dog' * 3
# 'dogdogdog'

34. Как привести к верхнему регистру первый символ каждого слова в строке?


Существует метод title(), приводящий к верхнему регистру первую букву каждого слова в строке.
'once upon a time'.title() #=> 'Once Upon A Time'

35. Как объединить две строки?


Для объединения строк можно воспользоваться оператором +.
'string one' + ' ' + 'string two' 
#=> 'string one string two'

36. Как пользоваться методом partition()?


Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')

37. Строки в Python иммутабельны. Что это значит?


То, что строки иммутабельны, говорит о том, что после того, как создан объект строки, он не может быть изменён. При «модификации» строк исходные строки не меняются. Вместо этого в памяти создаются совершенно новые объекты. Доказать это можно, воспользовавшись функцией id().
proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440

При конкатенации 'Rise each day before the sun' и ' if its a weekday' в памяти создаётся новый объект, имеющий новый идентификатор. Если бы исходный объект менялся бы, тогда у объектов был бы один и тот же идентификатор.

38. Если объявить одну и ту же строку дважды (записав её в 2 разные переменные) — сколько объектов будет создано в памяти? 1 или 2?


В качестве примера подобной работы со строками можно привести такой фрагмент кода:
animal = 'dog'
pet = 'dog'

При таком подходе в памяти создаётся лишь один объект. Когда я столкнулся с этим в первый раз, мне это не показалось интуитивно понятным. Но этот механизм помогает Python экономить память при работе с длинными строками.

Доказать это можно, прибегнув к функции id().

animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688

39. Как пользоваться методами maketrans() и translate()?


Метод maketrans() позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.

Метод translate() позволяет применить заданную таблицу для преобразования строки.

# создаём отображение
mapping = str.maketrans("abcs", "123S")
# преобразуем строку
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'

Обратите внимание на то, что в строке произведена замена символов a, b, c и s, соответственно, на символы 1, 2, 3 и S.

40. Как убрать из строки гласные буквы?


Один из ответов на этот вопрос заключается в том, что символы строки перебирают, пользуясь механизмом List Comprehension. Символы проверяют, сравнивая с кортежем, содержащим гласные буквы. Если символ не входит в кортеж — он присоединяется к новой строке.
string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'

41. В каких ситуациях пользуются методом rfind()?


Метод rfind() похож на метод find(), но он, в отличие от find(), просматривает строку не слева направо, а справа налево, возвращая индекс первого найденного вхождения искомой подстроки.
story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39

Итоги


Я часто объясняю одному продакт-менеджеру, человеку в возрасте, что разработчики — это не словари, хранящие описания методов объектов. Но чем больше методов помнит разработчик — тем меньше ему придётся гуглить, и тем быстрее и приятнее ему будет работаться. Надеюсь, теперь вы без труда ответите на рассмотренные здесь вопросы.

Уважаемые читатели! Что, касающееся обработки строк в Python, вы посоветовали бы изучить тем, кто готовится к собеседованию?

Методы строк в Python

capitalize()

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

Совет: если хотите сделать заглавными первые буквы всех слов в строке, используйте title().

a = "bee sting" 
print(a.capitalize())

Результат:

Bee sting

casefold()Возвращает копию строки, в которой все буквы переведены в нижний регистр. Это может быть полезно для поиска соответствий без учета регистра.
a = "BEE"
print(a.casefold())

Результат:

bee

center(width[, fillchar])

Этот метод помещает указанную строку в центр другой строки, ширина которой (в символах) определяется параметром width.

Все пространство, не заполненное центральной строкой, заполняется символами, заданными в параметре fillchar (по умолчанию используется пробел ASCII).

Если указанная ширина строки меньше, чем ширина исходной строки (len(s)), или равна ей, возвращается исходная строка.

a = "bee" 
b = a.center(12, "-")
print(b)

Результат:

—-bee——

count(sub[, start[, end]])

Метод возвращает число вхождений указанной подстроки sub в строку в заданном промежутке ([start, end]).

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

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

Например, если у вас есть строка хххх и вы хотите подсчитать, сколько в ней вхождений подстроки ххх, то в результате получите 1.

a = "Mushroooom soup" 
print(a.count("O"))
print(a.count("o"))
print(a.count("oo"))
print(a.count("ooo"))
print(a.count("Homer"))
print(a.count("o", 4, 7))
print(a.count("o", 7))

Результат:

0
5
2
1
0
2
3

encode(encoding="utf-8", errors="strict")

Возвращает декодированную версию строки в качестве байтового объекта. Кодировка по умолчанию — utf-8.

При помощи параметра errors можно задавать разные наборы схем обработки ошибок. Возможны следующие варианты:

  • strict (ошибки декодирования вызывают UnicodeError)

  • ignore

  • replace

  • xmlcharrefreplace

  • backslashreplace

  • любое другое слово, зарегистрированное через codecs.register_error()

from base64 import b64encode

a = "Banana"
print(a)

a = b64encode(a.encode())
print(a)

Результат:

Banana
b’QmFuYW5h’

endswith(suffix[, start[, end]])

Возвращает True, если строка заканчивается на указанный суффикс; в противном случае возвращает False.

Суффикс также может быть кортежем суффиксов.

Если указывается аргумент start, проверка начинается с указанной позиции.

При указании аргумента end проверка останавливается на указанном символе. Оба аргумента опциональны.

a = "Banana"
print(a.endswith("a"))
print(a.endswith("nana"))
print(a.endswith("z"))
print(a.endswith("an", 1, 3))

Результат:

True
True
False
True

expandtabs(tabsize=8)Этот метод возвращает строку, в которой все символы табуляции (\t) заменяются одним или несколькими пробелами. При этом строка получается разделенной на столбцы. При помощи tabsize можно задать ширину столбцов в символах.
a = "1\t2\t3"
print(a)
print(a.expandtabs())
print(a.expandtabs(tabsize=12))
print(a.expandtabs(tabsize=2))

Результат:

1 2   3
1 2 3
1 2 3
1 2 3
find(sub[, start[, end]])

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

Можно указать диапазон поиска при помощи опциональных аргументов start и end (они интерпретируются как срез).

Если подстрока в строке не найдена, возвращается -1.

Примечание: метод find() стоит использовать, только если вам нужно знать позицию, с которой начинается подстрока. Если позиция вам не нужна и вы хотите просто проверить, встречается ли в строке эта подстрока, используйте оператор in.

a = "Fitness"
print(a.find("F"))
print(a.find("f"))
print(a.find("n"))
print(a.find("ness"))
print(a.find("ess"))
print(a.find("z"))
print(a.find("Homer"))

Результат:

0
-1
3
3
4
-1
-1

format(*args, **kwargs)

При помощи этого метода можно отформатировать строку.

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

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

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

# Пример 1
print("{} and {}".format("Tea", "Coffee"))

# Пример 2
print("{1} and {0}".format("Tea", "Coffee"))

# Пример 3
print("{lunch} and {dinner}".format(lunch="Peas", dinner="Beans"))

# Пример 4
print("{0}, {1}, {2}".format(*"123"))

# Пример 5
lunch = {"food": "Pizza", "drink": "Wine"}
print("Lunch: {food}, {drink}".format(**lunch))

Результат:

Tea and Coffee
Coffee and Tea
Peas and Beans
1, 2, 3
Lunch: Pizza, Wine

format_map(mapping)Работа этого метода аналогична работе format(**mapping), за исключением того, что здесь отображение используется напрямую, без копирования в словарь.
# Пример 1
lunch = {"Food": "Pizza", "Drink": "Wine"}
print("Lunch: {Food}, {Drink}".format_map(lunch))

# Пример 2
class Default(dict):
    def __missing__(self, key):
      return key

lunch = {"Food": "Pizza"}
print("Lunch: {Food}, {Drink}".format_map(Default(lunch)))

lunch = {"Drink": "Wine"}
print("Lunch: {Food}, {Drink}".format_map(Default(lunch)))

Результат:

Lunch: Pizza, Wine
Lunch: Pizza, Drink
Lunch: Food, Wine

index(sub[, start[, end]])Этот метод напоминает find(), который мы уже разбирали выше. Но здесь, если заданная подстрока не найдена в строке, вы получаете ValueError (в отличие от find(), который возвращает -1).
a = "Fitness"
print(a.index("F"))
print(a.index("n"))
print(a.index("ness"))
print(a.index("ess"))
print(a.index("z"))   #Error

Результат:

0
3
3
4
ValueError: substring not found

isalnum()

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

Значение переменной c считается буквенно-цифровым, если хотя бы одно из выражений возвращает True:

  • c.isalpha()

  • c.isdecimal()

  • c.isdigit()

  • c.isnumeric()

c = "Fitness"
print(c.isalnum())

c = "123"
print(c.isalnum())

c = "1.23"
print(c.isalnum())

c = "$*%!!!"
print(c.isalnum())

c = "0.34j"
print(c.isalnum())

Результат:

True
True
False
False
False

isalpha()

Возвращает True, если все символы в строке — буквенные (и при этом в строке есть хоть один символ). В противном случае возвращает False.

Примечание. Имейте в виду, что под «буквенными» символами понимаются символы, определенные в базе данных Unicode как «буква», т. е., относящиеся к любой из категорий «Lm», «Lt», «Lu», «Ll» и «Lo».

c = "Fitness"
print(c.isalpha())

c = "123"
print(c.isalpha())

c = "$*%!!!"
print(c.isalpha())

Результат:

True
False
False

isdecimal()

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

К десятичным символам относятся символы, с помощью которых можно формировать числа в десятичной системе счисления. В Unicode эти символы относятся к общей категории «Nd».

c = "123"
print(c.isdecimal())

c = u"\u00B2"
print(c.isdecimal())

c = "1.23"
print(c.isdecimal())

c = "u123"
print(c.isdecimal())

c = "Fitness"
print(c.isdecimal())

c = "$*%!!!"
print(c.isdecimal())

Результат:

True
False
False
False
False
False

isdigit()

Возвращает True, если все символы в строке являются цифрами (и если в строке есть хотя бы один символ). Иначе возвращает False.

Метод isdigit() часто используется, например, при работе с надстрочными символами Unicode (обозначающими степень числа).
Цифра это символ, имеющий значение свойства Numeric_Type=Digit или Numeric_Type=Decimal.

Разницу между методами isdigit() и isdecimal() можно увидеть, если посмотреть, как они работают со вторым примером (u»\u00B2″).

c = "123"
print(c.isdigit())

c = u"\u00B2"
print(c.isdigit())

c = "1.23"
print(c.isdigit())

c = "u123"
print(c.isdigit())

c = "Fitness"
print(c.isdigit())

c = "$*%!!!"
print(c.isdigit())

Результат:

True
True
False
False
False
False

isidentifier()

Возвращает True, если строка является допустимым идентификатором, определенным в разделе «Идентификаторы и ключевые слова» документации Python.

Совет: для проверки зарезервированных идентификаторов, таких как def, for и class, используйте keyword.iskeyword().

a = "123"
print(a.isidentifier())

a = "_user_123"
print(a.isidentifier())

a = "_user-123"
print(a.isidentifier())

a = "Homer"
print(a.isidentifier())

a = "for"
print(a.isidentifier())

Результат:

False
True
False
True
True

islower()

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

Речь идет о символах, которые в принципе могут быть как в нижнем, так и в верхнем регистре, т. е., относящихся к одной из общих категорий «Lu», «Ll» или «Lt».

Чтобы перевести строку в нижний регистр, можно использовать метод casefold() (это показано в последнем примере).

a = " "
print(a.islower())

a = "123"
print(a.islower())

a = "_user_123"
print(a.islower())

a = "Homer"
print(a.islower())

a = "HOMER"
print(a.islower())

a = "homer"
print(a.islower())

a = "HOMER"
a = a.casefold() #Force lowercase
print(a.islower())

Результат:

False
False
True
False
False
True
True

isnumeric()

Возвращает True, если все символы в строке являются числовыми, и в строке есть хотя бы один символ. Иначе возвращает False.

К числовым символам относятся все цифры, а также все символы, имеющие в Unicode значение свойства Numeric_Type=Digit, Numeric_Type=Decimal или Numeric_Type=Numeric.

c = "123"
print(c.isnumeric())

c = u"\u00B2"
print(c.isnumeric())

c = "1.23"
print(c.isnumeric())

c = "u123"
print(c.isnumeric())

c = "Fitness"
print(c.isnumeric())

c = "$*%!!!"
print(c.isnumeric())

Результат:

True
True
False
False
False
False

isprintable()

Возвращает True, если все символы в строке являются печатаемыми (и при этом в строке есть хотя бы один символ). Иначе возвращает False.

К непечатаемым символам относятся символы, определенные в базе данных Unicode как «Other» или «Separator», за исключением пробела ASCII (0x20), который считается печатаемым.

В этом контексте к печатаемым символам относятся те, которые не должны экранироваться при вызове метода repr() для этой строки. Это не касается обработки строк, записанных в sys.stdout или sys.stderr.

a = ""
print(a.isprintable())

a = " "
print(a.isprintable())

a = u"\u00B2"
print(a.isprintable())

a = "Bart"
print(a.isprintable())

a = "\t"
print(a.isprintable())

a = "\r\n"
print(a.isprintable())

a = "Bart \r"
print(a.isprintable())

Результат:

True
True
True
True
False
False
False

isspace()

Возвращает True, если строка состоит из одних пробелов (и строка при этом не пустая). В противном случае возвращает False.

К символам пробелов относятся те, который в базе данных Unicode определены как «Other» или «Separator» и имеют двунаправленное свойство «WS», «B» или «S».

a = ""
print(a.isspace())

a = " "
print(a.isspace())

a = "Bart"
print(a.isspace())

a = "\t"
print(a.isspace())

a = "\r\n"
print(a.isspace())

a = "Bart \r"
print(a.isspace())

Результат:

False
True
False
True
True
False

istitle()

Возвращает True, если строка написана в title case (т. е., каждое слово написано с заглавной буквы, а все остальные буквы в словах строчные; это один из возможных вариантов набор заголовков, отсюда название).

Чтобы метод вернул True, строка также не должна быть пустой. В противном случае возвращается False.

a = ""
print(a.istitle())

a = " "
print(a.istitle())

a = " t"
print(a.istitle())

a = " T"
print(a.istitle())

a = "Tea"
print(a.istitle())

a = "Tea and Coffee"
print(a.istitle())

a = "Tea And Coffee"
print(a.istitle())

a = "1. Tea & Coffee \r"
print(a.istitle())

Результат:

False
False
False
True
True
False
True
True

isupper()

Этот метод возвращает True, если все символы в строке стоят в верхнем регистре (т. е., заглавные), при этом строка содержит хотя бы один символ. В противном случе возвращается False.

Речь идет о символах, которые в принципе могут быть как в нижнем, так и в верхнем регистре, т. е., относящихся к одной из общих категорий «Lu», «Ll» или «Lt».

a = " "
print(a.isupper())

a = "123"
print(a.isupper())

a = "_USER_123"
print(a.isupper())

a = "Homer"
print(a.isupper())

a = "HOMER"
print(a.isupper())

a = "homer"
print(a.isupper())

a = "HOMER"
a = a.casefold() #Force lowercase
print(a.isupper())

Результат:

False
False
True
False
True
False
False

join(iterable)

Возвращает строку, которая является конкатенацией строк в итерируемом объекте.

Если в итерируемом объекте будут любые нестроковые значения, включая байтовые объекты, вы получите TypeError.

Разделителем между элементами служит заданная строка.

a = "-"
print(a.join("123"))

a = "."
print(a.join("USA"))

a = ". "
print(a.join(("Dr", "Who")))

Результат:

1-2-3
U.S.A
Dr. Who

ljust(width[, fillchar])

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

Для заполнения места, не занятого оригинальной строкой, используются ASCII пробелы, но можно и указать желаемый символ — при помощи параметра fillchar.

Если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи len(s)), то возвращается оригинальная строка.


Здесь все по аналогии с методом center(), только там строка выравнивается по центру.

a = "bee" 
b = a.ljust(12, "-")
print(b)

Результат:

bee———

lower()

Возвращает копию строки, в которой все символы переведены в нижний регистр.

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

В плане замены символов этот метод менее агрессивен, чем casefold(). Для иллюстрации различия часто приводится пример с немецкой буквой ß, которая эквивалентна ss. Поскольку эта буква уже стоит в нижнем регистре, метод lower() ее просто пропустит, а вот метод casefold() преобразует в ss.

a = "BEE"
print(a.lower())

Результат:

bee

lstrip([chars])

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

В аргументе chars задается набор символов, которые нужно удалить. Если не задавать этот аргумент или установить его в None, по умолчанию будут удалены все пробелы слева.

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

a = "      Bee      "
print(a.lstrip(), "!")

a = "-----Bee-----"
print(a.lstrip("-"))

Результат:

Bee       !
Bee-----
maketrans(x[, y[, z]])

Это статический метод, возвращающий таблицу преобразования символов, которую затем можно применить для метода translate().

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

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

Если задается третий аргумент, это должна быть строка, символы которой в результате будут отражены в None.

frm = "SecrtCod"
to = "12345678"
trans_table = str.maketrans(frm, to)
secret_code = "Secret Code".translate(trans_table)
print(secret_code)

Результат:

123425 6782

partition(sep)

Разделяет строку в месте первого вхождения заданного разделителя (sep) и возвращает кортеж из трех элементов: части строки до разделителя, самого разделителя и части строки после него.

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

a = "Python-program"

print(a.partition("-"))
print(a.partition("."))

Результат:

(‘Python’, ‘-‘, ‘program’)
(‘Python-program’, », »)

replace(old, new[, count])Возвращает копию строки, где все вхождения old заменены на new. Если добавлен опциональный аргумент count, будут заменены не все вхождения old, а столько, сколько указано в count. То есть, если count это 3, то будут заменены только первые 3 вхождения old.
a = "Tea bag. Tea cup. Tea leaves."

print(a.replace("Tea", "Coffee"))
print(a.replace("Tea", "Coffee", 2))

Результат:

Coffee bag. Coffee cup. Coffee leaves.
Coffee bag. Coffee cup. Tea leaves.

rfind(sub[, start[, end]])

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

При помощи опциональных аргументов start и end можно задать диапазон для поиска подстроки в строке (эти аргументы интерпретируются как срез). Если подстрока в строке не найдена, возвращается -1.

Работа этого метода аналогична работе метода find(), только find() ищет индекс первого вхождения подстроки.

a = "Yes Fitness"

print(a.rfind("Y"))
print(a.rfind("e"))
print(a.rfind("s"))
print(a.rfind("ss"))
print(a.rfind("y"))
print(a.rfind("z"))
print(a.rfind("Homer"))

Результат:

0
8
10
9
-1
-1
-1

rindex(sub[, start[, end]])

Этот метод похож на приведенный выше метод rfind(), но если он не находит заданную подстроку sub, то выдает ValueError, а не -1.

В общем, как rfind() можно считать зеркальным отражением find(), так и rindex(), по сути, отражение index().

a = "Yes Fitness"

print(a.rindex("Y"))
print(a.rindex("e"))
print(a.rindex("s"))
print(a.rindex("ss"))
print(a.rindex("y"))
print(a.rindex("z"))
print(a.rindex("Homer"))

Результат:

0
8
10
9
ValueError: substring not found
ValueError: substring not found
ValueError: substring not found

rjust(width[, fillchar])

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

Для заполнения места, не занятого оригинальной строкой, используются символы, заданные при помощи параметра fillchar.

Если символ-заполнитель не задан, по умолчанию будут использоваться ASCII пробелы.

В случае, если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи len(s)), возвращается оригинальная строка.

Здесь все по аналогии с методом center(), где строка выравнивается по центру, и с методом ljust(), где строка выравнивается по левому краю.

a = "bee" 
b = a.rjust(12, "-")
print(b)

Результат:

———bee

rpartition(sep)

Разделяет строку в месте последнего вхождения заданного разделителя (sep) и возвращает кортеж из трех элементов: части строки до разделителя, самого разделителя и части строки после него.

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

Работа этого метода как бы зеркально отражает работу метода partition().

a = "Homer-Jay-Simpson"

print(a.rpartition("-"))
print(a.rpartition("."))

Результат:

(‘Homer-Jay’, ‘-‘, ‘Simpson’)
(», », ‘Homer-Jay-Simpson’)

rsplit(sep=None, maxsplit=-1)

Возвращает список слов в строке, используя sep в качестве разделителя.

Если задан параметр maxsplit, будет отделено указанное число слов, причем с правого края строки.

Разделитель можно не задавать или указать None — в таком случае разделителем будет считаться любой пробел (или подстрока из пробелов).

Работа rsplit() — зеркальное отражение работы метода split(), о котором еще будет идти речь ниже.

a = "Homer Jay Simpson"
print(a.rsplit())

a = "Homer-Jay-Simpson"
print(a.rsplit(sep="-",maxsplit=1))

Результат:

[‘Homer’, ‘Jay’, ‘Simpson’] [‘Homer-Jay’, ‘Simpson’]
rstrip([chars])

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

В аргументе chars задается набор символов, которые нужно удалить. Если не задавать этот аргумент или установить его в None, по умолчанию будут удалены все пробелы справа.

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

Работа этого метода — зеркальное отражение работы lstrip().

a = "      Bee      "
print(a.rstrip(), "!")

a = "-----Bee-----"
print(a.rstrip("-"))

Результат:

Bee !
——Bee

split(sep=None, maxsplit=-1)

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

Строка-разделитель задается при помощи параметра sep.

Если разделитель указан, то последовательно расположенные разделители не группируются вместе. В этом случае считается, что они разделяют пустые строки. Например, '1,,2'.split(',') вернет ['1', '', '2'].

Заданный разделитель может состоять из нескольких символов. Например, '1<>2<>3'.split('<>') вернет ['1', '2', '3'].

Если метод split() применить к пустой строке и при этом указать разделитель, метод вернет [''].

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

Если исходная строка состоит исключительно из пробелов или пуста, а в качестве разделителя будет указан None, то метод вернет [].

a = "Homer Jay Simpson"
print(a.split())

a = "Homer-Jay-Simpson"
print(a.split(sep="-",maxsplit=1))

a = "Homer,,Bart,"
print(a.split(","))

a = "Homer,,Bart"
print(a.split(",", maxsplit=1))

a = "Homer<>Bart<>Marge"
print(a.split("<>"))

Результат:

[‘Homer’, ‘Jay’, ‘Simpson’] [‘Homer’, ‘Jay-Simpson’] [‘Homer’, », ‘Bart’, »] [‘Homer’, ‘,Bart’] [‘Homer’, ‘Bart’, ‘Marge’]
splitlines([keepends])

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

Сами символы, отделяющие строчки, не будут входить в итоговый список, если не указать keepends=True.

Этот метод делит строку по следующим экранированным последовательностям:

  • \n — перевод строки;

  • \r — возврат каретки;

  • \r\n — возврат каретки + перевод строки;

  • \v или \x0b — вертикальная табуляция;

  • \f или \x0c — разрыв страницы;

  • \x1c — разделитель файлов;

  • \x1d — разделитель групп;

  • \x1e — разделитель записей;

  • \x85 — следующая строка;

  • \u2028 — разделитель строк;

  • \u2029 — разделитель абзацев.

a = "Tea\n\nand coffee\rcups\r\n"

print(a.splitlines())
print(a.splitlines(keepends=True))

Результат:

[‘Tea’, », ‘and coffee’, ‘cups’] [‘Tea\n’, ‘\n’, ‘and coffee\r’, ‘cups\r\n’]
startswith(prefix[, start[, end]])

Возвращает True, если строка начинается с указанного префикса; в противном случае возвращает False.

Префикс также может быть кортежем префиксов.

Если указывается аргумент start, проверка начинается с указанной позиции. При указании аргумента end проверка останавливается на указанном символе. Оба аргумента опциональны.

Этот метод — зеркальное отражение метода endswith(), о котором мы уже говорили.

a = "Homer"
print(a.startswith("H"))
print(a.startswith("h"))
print(a.startswith("Homer"))
print(a.startswith("z"))
print(a.startswith("om", 1, 3))

Результат:

True
False
True
False
True

strip([chars])

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

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

Работа этого метода — своего рода комбинация работы методов lstrip() и rstrip().

a = "      Bee      "
print(a.strip(), "!")

a = "-----Bee-----"
print(a.strip("-"))

Результат:

Bee !
Bee

swapcase()

Возвращает копию строки, в которой все символы, стоящие в верхнем регистре, переведены в нижний, и наоборот.

Обратите внимание, что повторное применение метода swapcase() не всегда вернет строку в первоначальном виде.

Есть такие комбинации, когда двум разным символам в нижнем регистре соответствует один символ в верхнем, так что «переключение» регистра может дать неожиданный эффект. Примеры можно посмотреть в обсуждении на Stack Overflow.

a = "Homer Simpson"
print(a.swapcase())

Результат:

hOMER sIMPSON

title()

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

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

a = "tea and coffee"
print(a.title())

a = "TEA AND COFFEE"
print(a.title())

Результат:

Tea And Coffee
Tea And Coffee

translate(table)

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

Для создания таблицы перевода можно воспользоваться вспомогательной функцией maketrans().

frm = "SecrtCod"
to = "12345678"
trans_table = str.maketrans(frm, to)
secret_code = "Secret Code".translate(trans_table)
print(secret_code)

Результат:

123425 6782

upper()Возвращает копию строки, в которой все символы переведены в верхний регистр. Речь идет о символах, которые в принципе могут быть как в верхнем, так и в нижнем регистре.
a = "bee"
print(a.upper())

Результат:

BEE

zfill(width)

Возвращает копию строки, которая приведена к указанной длине (задается при помощи параметра width).

Если исходная строка короче указанной длины, «пустота» заполняется нулями ASCII слева.

Знаки +/- указываются в исходной строке и учитываются при подсчете ее длины.

Если длина исходной строки больше или равна width, будет возвращена просто исходная строка.

a = "36"
print(a.zfill(5))

a = "-36"
print(a.zfill(5))

a = "+36"
print(a.zfill(5))

Результат:

00036
-0036
+0036

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

В Python существуют несколько видов данных. Основные типы данных, с которыми вы столкнетесь – это string, ingteger, float, list, dict и tuple. В данной статье мы рассмотрим тип данных string (строка). Вы удивитесь тому, сколько всего можно делать со строками в Python. Также существует модуль string, который можно импортировать для получения доступа к еще большим возможностям, но мы рассмотрим его в другой статье. Вместо этого, мы пройдемся по следующим разделам:

  • Как создавать строки
  • Конкатенация строк
  • Методы строк
  • Замена строк

Как создать строку

Строки всегда создаются одним из трех способов. Вы можете использовать одинарные, двойные и тройные скобки. Давайте посмотрим

my_string = "Добро пожаловать в Python!" another_string = 'Я новый текст тут...' a_long_string = '''А это у нас новая строка в троичных скобках'''

my_string = "Добро пожаловать в Python!"

another_string = 'Я новый текст тут...'

 

a_long_string = '''А это у нас

новая строка

в троичных скобках'''

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

my_string = "I'm a Python programmer!" otherString = 'Слово "Python" обычно подразумевает змею' tripleString = """В такой "строке" мы можем 'использовать' все."""

my_string = "I'm a Python programmer!"

otherString = 'Слово "Python" обычно подразумевает змею'

tripleString = """В такой "строке" мы можем 'использовать' все."""

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

my_number = 123 my_string = str(my_number)

my_number = 123

my_string = str(my_number)

Если вы впишете данный код в ваш интерпретатор, вы увидите, что вы изменили значение интегратора на строку и присвоили ее переменной my_string. Это называется кастинг, или конвертирование. Вы можете конвертировать некоторые типы данных в другие, например числа в строки. Но вы также заметите, что вы не всегда можете делать обратное, например, конвертировать строку вроде ‘ABC’ в целое число. Если вы сделаете это, то получите ошибку вроде той, что указана в этом примере:

int('ABC') Traceback (most recent call last): File "<string>", line 1, in <fragment> ValueError: invalid literal for int() with base 10: 'ABC'

int('ABC')

 

Traceback (most recent call last):

    File "<string>", line 1, in <fragment>

ValueError: invalid literal for int() with base 10: 'ABC'

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

То все должно работать. Обратите внимание на то, что строка – это один из неизменных типов Python. Это значит, что вы не можете менять содержимое строки после ее создания. Давайте попробуем сделать это и посмотрим, что получится:

my_string = "abc" my_string[0] = "d" Traceback (most recent call last): File "<string>", line 1, in <fragment> TypeError: 'str' object does not support item assignment

my_string = "abc"

my_string[0] = "d"

 

Traceback (most recent call last):

    File "<string>", line 1, in <fragment>

TypeError: 'str' object does not support item assignment

Здесь мы пытаемся изменить первую букву с «а» на «d«, в итоге это привело к ошибке TypeError, которая не дает нам сделать это. Теперь вы можете подумать, что присвоение новой строке то же значение и есть изменение строки. Давайте взглянем, правда ли это:

my_string = "abc" a = id(my_string) print(a) # 19397208 my_string = "def" b = id(my_string) print(b) # 25558288 my_string = my_string + "ghi" c = id(my_string) print(c) # 31345312

my_string = "abc"

a = id(my_string)

print(a) # 19397208

 

my_string = "def"

b = id(my_string)

print(b) # 25558288

 

my_string = my_string + "ghi"

c = id(my_string)

print(c) # 31345312

Проверив id объекта, мы можем определить, что когда мы присваиваем новое значение переменной, то это меняет тождество. Обратите внимание, что в версии Python, начиная с 2.0, строки могут содержать только символы ASCII. Если вам нужен Unicode, тогда вы должны вписывать u перед вашей строкой. Пример:

# -*- coding: utf-8 -*- my_unicode_string = u"Это юникод!"

# -*- coding: utf-8 -*-

my_unicode_string = u"Это юникод!"

В Python, начиная с версии 3, все строки являются юникодом.

> Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Открыть форум

> Чат и Паблик Программистов

Присоединяйтесь к нашему чату в Телеграм и подпишитесь на наш паблик в ВК.

Конкатенация строк

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

# -*- coding: utf-8 -*- string_one = "Собака съела " string_two = "мою книгу!" string_three = string_one + string_two print(string_three) # Собака съела мою книгу!

# -*- coding: utf-8 -*-

 

string_one = "Собака съела "

string_two = "мою книгу!"

string_three = string_one + string_two

 

print(string_three) # Собака съела мою книгу!

Оператор + конкатенирует две строки в одну

Методы строк

Строка является объектом в Python. Фактически, все, что есть в Python – является объектом. Если вы хотите узнать больше об Объектно-ориентированном программирование, мы рассмотрим это в другой статье «Классы в Python«. В данный момент достаточно знать, что строки содержат собственные встроенные методы. Например, допустим, у вас есть следующая строка:

my_string = "This is a string!"

my_string = "This is a string!"

Теперь вам нужно сделать так, чтобы вся эта строка была в верхнем регистре. Чтобы сделать это, все, что вам нужно, это вызвать метод upper(), вот так:

Если вы открыли ваш интерпретатор, вы также можете сделать то же самое:

"This is a string!".upper()

"This is a string!".upper()

Существует великое множество других методов строк. Например, если вам нужно, что бы все было в нижнем регистре, вам нужно использовать метод lower(). Если вы хотите удалить все начальные и конечные пробелы, вам понадобится метод strip(). Для получения списка всех методов строк, впишите следующую команду в ваш интерпретатор:

Вы увидите что-то на подобие этого:

[‘__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__getnewargs__’, ‘__getslice__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__mod__’, ‘__mul__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__rmod__’, ‘__rmul__’, ‘__- setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘_formatter_field_name_split’, ‘_formatter_parser’, ‘capitalize’, ‘center’, ‘count’, ‘decode’, ‘encode’, ‘endswith’, ‘expandtabs’, ‘find’, ‘format’, ‘index’, ‘isalnum’, ‘isalpha’, ‘isdigit’, ‘islower’, ‘isspace’, ‘istitle’, ‘isupper’, ‘join’, ‘ljust’, ‘lower’, ‘lstrip’, ‘partition’, ‘replace’, ‘rfind’, ‘rindex’, ‘rjust’, ‘rpartition’, ‘rsplit’, ‘rstrip’, ‘split’, ‘splitlines’, ‘startswith’, ‘strip’, ‘swapcase’, ‘title’, ‘translate’, ‘upper’, ‘zfill’]

[‘__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__doc__’, ‘__eq__’, ‘__format__’,

‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__getnewargs__’, ‘__getslice__’, ‘__gt__’,

‘__hash__’, ‘__init__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__mod__’, ‘__mul__’, ‘__ne__’,

‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__rmod__’, ‘__rmul__’, ‘__-

setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘_formatter_field_name_split’,

‘_formatter_parser’, ‘capitalize’, ‘center’, ‘count’, ‘decode’, ‘encode’, ‘endswith’, ‘expandtabs’,

‘find’, ‘format’, ‘index’, ‘isalnum’, ‘isalpha’, ‘isdigit’, ‘islower’, ‘isspace’,

‘istitle’, ‘isupper’, ‘join’, ‘ljust’, ‘lower’, ‘lstrip’, ‘partition’, ‘replace’, ‘rfind’, ‘rindex’,

‘rjust’, ‘rpartition’, ‘rsplit’, ‘rstrip’, ‘split’, ‘splitlines’, ‘startswith’, ‘strip’, ‘swapcase’,

‘title’, ‘translate’, ‘upper’, ‘zfill’]

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

help(my_string.capitalize)

help(my_string.capitalize)

Вы получите следующую информацию:

Help on built-in function capitalize: capitalize(...) S.capitalize() -> string Выдача копии строки S только с заглавной буквой.

Help on built-in function capitalize:

 

capitalize(...)

    S.capitalize() -> string

 

Выдача копии строки S только с заглавной буквой.

Вы только что узнали кое-что о разделе, под названием интроспекция. Python может исследовать все свои объекты, что делает его очень легким в использовании. В основном, интроспекция позволяет вам спрашивать Python о нём. Вам моет быть интересно, как сказать о том, какой тип переменной был использован (другими словами int или string). Вы можете спросить об этом у Python!

type(my_string) # <type 'str'>

type(my_string) # <type 'str'>

Как вы видите, тип переменной my_string является str!

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

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

my_string = "I like Python!"

my_string = "I like Python!"

Каждый символ в строке может стать доступным при помощи слайсинга (нарезки). Например, если вам нужно взять только первый символ, вы можете сделать это следующим образом:

print( my_string[0:1] ) # I

print( my_string[0:1] ) # I

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 - I l i k e P y t h o n !

0 1 2 3 4 5 6 7 8 9 10 11 12 13 - I l i k e P y t h o n !

Таким образом, у нас есть строка длиной в 14 символов, начиная с нуля и до тринадцати. Давайте приведем несколько примеров, чтобы понять это лучше.

my_string[:1] # 'I' my_string[0:12] # 'I like Pytho' my_string[0:13] # 'I like Python' my_string[0:14] # 'I like Python!' my_string[0:-5] # 'I like Py' my_string[:] # 'I like Python!' my_string[2:] # 'like Python!'

my_string[:1] # 'I'

my_string[0:12] # 'I like Pytho'

my_string[0:13] # 'I like Python'

my_string[0:14] # 'I like Python!'

my_string[0:-5] # 'I like Py'

my_string[:] # 'I like Python!'

my_string[2:] # 'like Python!'

Как видно в данных примерах, мы можем назначить срез, лишь указав его начало (другими словами, my_string[2:]), конец среза (my_string[:1]), или оба (my_string[0:13]). Мы можем даже использовать отрицательные значения, которые начинаются с конца строки. Так что в примере, где мы указали my_string[0:-5], начало ведется с нуля и заканчивается 5 символами, перед концом строки. Вы можете задаться вопросом «Зачем мне это и где это можно применить?». Лично я использовал это для разбора записей с фиксированной шириной в файлах, или ситуативно для парсинга сложных названий файлов, с очень специфическими наименованиями. Также я использовал это для парсинга значений в бинарных файлах. Любая работа, которая включает в себя обработку текстовых файлов, может быть намного проще, если вы понимаете, как работает нарезка и как эффективно использовать данный инструмент. Вы также можете получить доступ к отдельным символам в строке с помощью индексации. Например:

Данный код выдаст первый символ в строке.

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

Форматирование строк (также известно как замещение) – это замещение значений в базовой строке. Большую часть времени вы будете вставлять строки внутри строк, однако, вам также понадобиться вставлять целые числа и числа с запятыми в строки весьма часто. Существует два способа достичь этой цели. Начнем с старого способа, после чего перейдем к новому:

# -*- coding: utf-8 -*- my_string = "Я люблю %s" % "Python" print(my_string) # Я люблю Python var = "яблоки" newString = "Я ем %s" % var print(newString) # Я ем яблоки another_string = "Я люблю %s и %s" % ("Python", var) print(another_string) # Я люблю Python и яблоки

# -*- coding: utf-8 -*-

 

my_string = "Я люблю %s" % "Python"

print(my_string) # Я люблю Python

 

var = "яблоки"

newString = "Я ем %s" % var

print(newString) # Я ем яблоки

 

another_string = "Я люблю %s и %s" % ("Python", var)

print(another_string) # Я люблю Python и яблоки

Как вы могли догадаться, % — это очень важная часть вышеописанного кода. Этот символ указывает Python, что вы скоро вставите текст на его место. Если вы будете следовать за строкой со знаком процента и другой строкой или переменной, тогда Python попытается вставить ее в строку. Вы можете вставить несколько строк, добавив несколько знаков процента в свою строку. Это видно в последнем примере. Обратите внимание на то, что когда вы добавляете больше одной строки, вам нужно закрыть эти строки в круглые скобки. Теперь взглянем на то, что случится, если мы вставим недостаточное количество строк:

another_string = "Я люблю %s и %s" % "Python" Traceback (most recent call last): File "<string>", line 1, in <fragment> TypeError: not enough arguments for format string

another_string = "Я люблю %s и %s" % "Python"

 

Traceback (most recent call last):

    File "<string>", line 1, in <fragment>

TypeError: not enough arguments for format string

О-па. Мы не передали необходимое количество аргументов для форматирования строки. Если вы внимательно взгляните на пример, вы увидите, что у нас есть два экземпляра %, но для того, чтобы вставить строки, вам нужно передать столько же %, сколько у нас строк. Теперь вы готовы к тому, чтобы узнать больше о вставке целых чисел, и чисел с запятыми. Давайте взглянем.

my_string = "%i + %i = %i" % (1,2,3) print(my_string) # '1 + 2 = 3' float_string = "%f" % (1.23) print(float_string) # '1.230000' float_string2 = "%.2f" % (1.23) print(float_string2) # '1.23' float_string3 = "%.2f" % (1.237) print(float_string3) # '1.24'

my_string = "%i + %i = %i" % (1,2,3)

print(my_string) # '1 + 2 = 3'

 

float_string = "%f" % (1.23)

print(float_string) # '1.230000'

 

float_string2 = "%.2f" % (1.23)

print(float_string2) # '1.23'

 

float_string3 = "%.2f" % (1.237)

print(float_string3) # '1.24'

Первый пример достаточно простой. Мы создали строку, которая принимает три аргумента, и мы передаем их. В случае, если вы еще не поняли, Python не делает никаких дополнений в первом примере. Во втором примере, мы передаем число с запятой. Обратите внимание на то, что результат включает множество дополнительных нулей (1.230000). Нам это не нужно, так что мы указываем Python ограничить выдачу до двух десятичных значений в третьем примере (“%.2f”). Последний пример показывает, что Python округлит числа для вас, если вы передадите ему дробь, что лучше, чем два десятичных значения. Давайте взглянем на то, что произойдет, если мы передадим неправильные данные:

int_float_err = "%i + %f" % ("1", "2.00") Traceback (most recent call last): File "<string>", line 1, in <fragment> TypeError: %d format: a number is required, not str

int_float_err = "%i + %f" % ("1", "2.00")

Traceback (most recent call last):

    File "<string>", line 1, in <fragment>

TypeError: %d format: a number is required, not str

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

int_float_err = "%i + %f" % (1, "2.00") Traceback (most recent call last): File "<string>", line 1, in <fragment> TypeError: float argument required, not str

int_float_err = "%i + %f" % (1, "2.00")

 

Traceback (most recent call last):

    File "<string>", line 1, in <fragment>

TypeError: float argument required, not str

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

Шаблоны и новая методика форматирования строк

Этот метод был добавлен в Python 2.4 в виде шаблонов строк, но в качестве обычного метода string, работающего через метод format в версии 2.6. Так что это не самый свежий метод, просто обновленный. В любом случае, приступим к работе с шаблонами!

print("%(lang)s is fun!" % {"lang":"Python"}) # Python is fun!

print("%(lang)s is fun!" % {"lang":"Python"}) # Python is fun!

Должно быть это выглядит странно, но на самом деле мы сменили наши % на %(lang), с тем отличием, что данный объект идет в комплекте с переменной. Вторая часть пример вызывает словарь Python, который мы рассмотрим в следующей статье. В основном, это пара key:value, так что когда Python ищет ключ lang в строке и в указанном словаре ключей, он заменяет этот ключ его значением. Давайте взглянем на следующие примеры:

a = "%(value)s %(value)s %(value)s !" % {"value":"SPAM"} print(a) # SPAM SPAM SPAM ! b = "%(x)i + %(y)i = %(z)i" % {"x":1, "y":2} print(b) Traceback (most recent call last): File "<string>", line 1, in <fragment> KeyError: 'z' c = "%(x)i + %(y)i = %(z)i" % {"x":1, "y":2, "z":3} print(c) # 1 + 2 = 3

a = "%(value)s %(value)s %(value)s !" % {"value":"SPAM"}

print(a) # SPAM SPAM SPAM !

 

b = "%(x)i + %(y)i = %(z)i" % {"x":1, "y":2}

print(b)

 

Traceback (most recent call last):

   File "<string>", line 1, in <fragment>

KeyError: 'z'

 

c = "%(x)i + %(y)i = %(z)i" % {"x":1, "y":2, "z":3}

print(c) # 1 + 2 = 3

В первом примере вы могли заметить, что мы передали только одно значение, но оно было вставлено три раза. Это одно из преимуществ использования шаблонов. Второй пример был загвоздкой, в которой мы забыли передать ключ z. В третьем примере эта проблема была исправлена с соответствующим результатом. Теперь давайте взглянем на то, что мы можем сделать, по аналогии с методом форматирования строк:

a = "Python is as simple as {0}, {1}, {2}".format("a", "b", "c") print(a) # 'Python is as simple as a, b, c' b = "Python is as simple as {1}, {0}, {2}".format("a", "b", "c") print(b) # 'Python is as simple as b, a, c' xy = {"x":0, "y":10} c = "Graph a point at where x={x} and y={y}".format(**xy) print(c) # Graph a point at where x=0 and y=10

a = "Python is as simple as {0}, {1}, {2}".format("a", "b", "c")

print(a) # 'Python is as simple as a, b, c'

 

b = "Python is as simple as {1}, {0}, {2}".format("a", "b", "c")

print(b) # 'Python is as simple as b, a, c'

 

xy = {"x":0, "y":10}

c = "Graph a point at where x={x} and y={y}".format(**xy)

print(c) # Graph a point at where x=0 and y=10

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

Подведем итоги

Мы проработали большой объем в данной статье. Давайте разберемся:
Сначала мы узнали, как создавать строки, после чего мы перешли к вопросу об их конкатенации. После этого, мы взглянули на несколько методов, которые предлагает нам объект string. Далее, мы рассмотрели нарезку строк и закончили замещением строк.

длина строки Python | Метод Len () Пример

Guru99
  • Главная
  • Испытание

      • Назад
      • Agile тестирование
      • BugZilla
      • Огурцы
      • База данных Тестирование
      • ETL Тестирование
      • Jmeter
      • JIRA
      • Назад
      • JUnit
      • LoadRunner
      • Ручное тестирование
      • Мобильное тестирование
      • Mantis
      • Почтальон
      • QTP
      • Back
      • Центр качества (ALM)
      • SAP000 SAP000 SAP000
      • SAP000
      • SAP000
      • SAP000
      • SAP000
      • SAP000
      • SAP000 Управление
      • TestLink
  • SAP

      • Назад
      • ABAP
      • APO
      • Новичок
      • Все
      • Назад
        • 9000 9000 9000 9000 9000 9000 9000 9000 9000 9000 следует подписать
        • Android
        • AngularJS
        • ASP.Чистая
        • C
        • C #
        • C ++
        • CodeIgniter
        • СУБД
        • Назад
        • Java
        • JavaScript
        • JSP
        • Kotlin
        • M000 M000 js
        • Back
        • Perl
        • PHP
        • PL / SQL
        • PostgreSQL
        • Python
        • ReactJS
        • Ruby & Rails
        • Scala
        • SQL5000
        • SQL000
        • UML
        • VB.Net
        • VBScript
        • Веб-сервисы
        • WPF
    • Необходимо учиться!

        • Назад
        • Учет
        • Алгоритмы
        • Blockchain
        • Бизнес-аналитик
        • Сложение Сайт
        • CCNA
        • Cloud Computing
        • COBOL
        • Compiler Design
        • Embedded Systems
        • Назад
        • Ethical Hacking
        • Excel Учебники
        • Go Программирование
        • IoT
        • ITIL
        • Дженкинс
        • MIS
        • Networking
        • Операционная система
        • Prep
        • Назад
        • PMP
        • Photoshop Управление
        • Проект
        • Отзывы
        • Salesforce
        • SEO
        • Разработка программного обеспечения
        • VBA
    • Big Data

        • Назад
        • AWS
        • BigData
        • Cassandra
        • Cognos
        • Складирование данных
        • 000000000 HBB000500040005000 HB
        • MongoDB
    .
    Python - Как мне установить максимальную длину строки в PyCharm?
    Переполнение стека
    1. Товары
    2. Клиенты
    3. Случаи использования
    1. Переполнение стека Публичные вопросы и ответы
    2. Команды Частные вопросы и ответы для вашей команды
    3. предприятие Частные вопросы и ответы для вашего предприятия
    4. работы Программирование и связанные с ним технические возможности карьерного роста
    5. Талант Нанимать технический талант
    6. реклама Связаться с разработчиками по всему миру

    Загрузка…

    ,
    Как написать красивый код Python с помощью PEP 8 - Real Python

    PEP 8, иногда пишется PEP8 или PEP-8, представляет собой документ, в котором содержатся рекомендации и рекомендации по написанию кода Python. Он был написан в 2001 году Гвидо ван Россумом, Барри Варшавой и Ником Когланом. Основной задачей PEP 8 является улучшение читабельности и согласованности кода Python.

    PEP расшифровывается как Python Enhancement Proposal, и их несколько. PEP - это документ, который описывает новые функции, предлагаемые для Python, и документирует аспекты Python, такие как дизайн и стиль, для сообщества.

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

    К концу этого урока вы сможете :

    • Написать код Python, соответствующий PEP 8
    • Понять обоснование руководящих принципов, изложенных в ПКП 8
    • Настройте среду разработки так, чтобы вы могли начать писать PEP 8-совместимый код Python

    Бесплатный бонус: 5 Мысли о Python Mastery, бесплатный курс для разработчиков Python, который показывает вам план и образ мышления, который вам понадобится, чтобы поднять свои навыки Python на следующий уровень.

    Почему нам нужен ПКП 8

    «Читаемость имеет значение.»

    - Дзен Питона

    PEP 8 существует для улучшения читабельности кода Python. Но почему так важна читабельность? Почему написание читаемого кода является одним из руководящих принципов языка Python?

    Как сказал Гвидо ван Россум: «Код читается гораздо чаще, чем пишется». Вы можете потратить несколько минут или целый день на написание фрагмента кода для обработки аутентификации пользователя.После того, как вы написали это, вы никогда не будете писать это снова. Но вам определенно придется прочитать это снова. Этот фрагмент кода может остаться частью проекта, над которым вы работаете. Каждый раз, когда вы возвращаетесь к этому файлу, вы должны помнить, что делает этот код и почему вы его написали, поэтому удобочитаемость имеет значение.

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

    Следование PEP 8 особенно важно, если вы ищете работу по разработке. Написание четкого, читаемого кода демонстрирует профессионализм. Он скажет работодателю, что вы понимаете, как правильно структурировать свой код.

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

    Соглашения об именах

    «Явное лучше, чем неявное»

    - Дзен Питона

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

    .

    Как найти длину отрезков, используя python

    Переполнение стека
    1. Товары
    2. Клиенты
    3. Случаи использования
    1. Переполнение стека Публичные вопросы и ответы
    2. Команды Частные вопросы и ответы для вашей команды
    3. предприятие Частные вопросы и ответы для вашего предприятия
    4. работы Программирование и связанные с ним технические возможности карьерного роста
    5. Талант Нанимать технический талант
    6. реклама Связаться с разработчиками по всему миру

    Загрузка…

Отправить ответ

avatar
  Подписаться  
Уведомление о