Строки. Функции и методы строк
Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.
Базовые операции
- Конкатенация (сложение)
При вызове методов необходимо помнить, что строки в 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(шаблон, замена[, maxcount]) | Замена шаблона на замену. maxcount ограничивает количество замен |
| S.split(символ) | Разбиение строки по разделителю |
| S.isdigit() | Состоит ли строка из цифр |
| S.isalpha() | Состоит ли строка из букв |
| S.isalnum() | Состоит ли строка из цифр или букв |
| S.islower() | Состоит ли строка из символов в нижнем регистре |
| S.isupper() | Состоит ли строка из символов в верхнем регистре |
| S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
| S.istitle() | Начинаются ли слова в строке с заглавной буквы |
| S.upper() | Преобразование строки к верхнему регистру |
| S.lower() | Преобразование строки к нижнему регистру |
| S.startswith(str) | Начинается ли строка S с шаблона str |
| S.endswith(str) | Заканчивается ли строка S шаблоном str |
| S.join(список) | Сборка строки из списка с разделителем S |
| ord(символ) | Символ в его код ASCII |
| chr(число) | Код ASCII в символ |
| S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
| S.center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
| S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
| S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
| S.lstrip([chars]) | Удаление пробельных символов в начале строки |
| S.rstrip([chars]) | Удаление пробельных символов в конце строки |
| S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
| S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
| S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
| S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
| S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
| S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
| S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
| S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
| S.format(*args, **kwargs) | Форматирование строки |
Для вставки кода на Python в комментарий заключайте его в теги
Как вставить в строку переменную python
С помощью конкатенации (сложения) тоже можно вставить нужный элемент в начало списка. Правда, для этого нужно, чтобы элемент был представлен в виде списка:
sp = [1, 2, 3] print([5] + sp)
Результат будет таким же, как и в первом способе:
[5, 1, 2, 3]
Способ 3: метод append
Этот метод по умолчанию расширяет существующий список, добавляя элемент в конец. Но ничто не мешает расширить список, состоящий из единственного элемента:
sp = [1, 2, 3] num = [5] num.append(sp) print(num)
Результат при использовании append() отличается – получится вложенный список:
[5, [1, 2, 3]]
Нужный элемент, однако, получает индекс 0 , так что цель достигнута. Кроме того, при решении некоторых задач может потребоваться создание именно вложенного списка, поэтому способ имеет право на жизнь.
Способ 4: метод extend
Метод extend() похож на append() – с той разницей, что он сохраняет «одномерность» списка:
sp = [1, 2, 3] num = [5] num.extend(sp) print(num)
Результат – обычный, не вложенный, список:
[5, 1, 2, 3]
Отметим, что одномерность сохранится даже в том случае, если элемент, который нужно поставить в начало списка, сам является списком, состоящим из нескольких элементов:
sp = [1, 2, 3] num = [5, 6, 7] num.extend(sp) print(num)
[5, 6, 7, 1, 2, 3]
4 способа добавления элемента в начало строки в Python
Строки в Python относятся к неизменяемому типу данных str , и представляют собой последовательности различных символов. Поскольку строки не изменяются, добавить элементы в начало последовательности можно только путем создания новой строки.
Способ 1: конкатенация
Строки в Python можно соединять (результатом будет новая строка). Рассмотрим на примере вставки знака + в начало строки, содержащей абстрактный мобильный номер:
el = '+' num = '91956612345' print(el + num)
Результатом операции станет новая строка:
+91956612345
Способ 2: использование f-строки
Вставить элемент в начало строки можно также с помощью f-строки:
el = '+' num = '91956612345' print(f'')
Результат будет аналогичным первому способу:
+91956612345
Способ 3: преобразование в список
Если нужно вставить элемент в определенную позицию строки, в том числе – в начало, можно последовательно воспользоваться преобразованием строки в список и объединением списка в строку с помощью метода join():
el = '+' num = list('91956612345') (num).insert(0, el) print(''.join(num))
Результат будет таким же:
+91956612345
Способ 4: использование rjust
Метод rjust() используется для выравнивания строки по правому краю. В качестве параметров он принимает длину новой строки и символ, которым будут заполнены пустые позиции. По умолчанию в качестве заполнителя используется пробел, но ничто не мешает выбрать знак + :
num = "91956612345" print(num.rjust(12, '+'))
В результате получится нужная строка, в начало которой вставлен необходимый символ:
+91956612345
Подведем итоги
Мы рассмотрели восемь простых и практичных способов добавления нужного элемента в начало списка и строки Python. Знаете какие-нибудь другие интересные способы вставки элементов? Поделитесь с нами в комментариях.
Материалы по теме
- Фундаментальные структуры данных: массивы и связанные списки с реализацией на Python
- Скрытые сокровища Python
- Трюки и советы по Python, которые облегчат вашу жизнь
Python-сообщество
![]()
- Начало
- » Python для новичков
- » как вставить переменную в строку
#1 Июнь 1, 2020 23:41:22
Fyodor Зарегистрирован: 2020-06-01 Сообщения: 1 Репутация: 0 Профиль Отправить e-mail
как вставить переменную в строку
не знаю как вставить переменную в строку, пожалуйста помогите, я совсем новичок
#2 Июнь 1, 2020 23:47:59
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
как вставить переменную в строку
Fyodor
Простите за неуместный вопрос, но…
вы пробовали почитать учебник-с?
#3 Июнь 3, 2020 20:14:28
xam1816 Зарегистрирован: 2020-05-11 Сообщения: 1260 Репутация: 108 Профиль Отправить e-mail
как вставить переменную в строку
Fyodor
не знаю как вставить переменную в строку, пожалуйста помогите, я совсем новичок
n = "ПЕРЕМЕННАЯ" str = "в этом месте <> будет всавлена".format(n) print(str) ch = "У" s = "x%sй"%(ch) print(s)
#4 Июнь 3, 2020 20:52:04
PythonJunior Зарегистрирован: 2020-06-03 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail
как вставить переменную в строку
n = ‘блаблабла’
print(“Привет, как дела? Слушай ” + n)
![]()
- Начало
- » Python для новичков
- » как вставить переменную в строку
HOW-TO: Программа на Python, Часть 2
В прошлом уроке мы рассмотрели простую программу, которая использовала input для получения ответа пользователя, простые типы переменных и простой цикл «for». В этом уроке мы рассмотрим ещё больше типов переменных и напишем ещё больше программ.
Списки
Давайте рассмотрим другой тип переменных, который называется списки. В других языках программирования они называются массивами. Если мы обратимся к аналогии с коробками для обуви, то массив (список) представляет собой несколько склеенных друг с другом коробок с одинаковыми вещами. Например, в одной коробке лежат вилки, в другой — ножи, в третьей — ложки. Посмотрим на простой список— список месяцев. Мы запрограммируем его так:
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
Чтобы создать список, мы заключили все значения в квадратные скобки ( '[' и ']' ). Мы назвали наш список 'months'. Чтобы использовать список, мы дадим команду print months[0] или months[1] (которые выведут на экран 'Jan' или 'Feb'). Помните: счет начинается с нуля. Чтобы найти длину списка, можно использовать такую функцию:
print (len(months))
которая вернёт 12.
Ещё один пример списков — категории в поваренной книге. Например…
categories = ['Main dish','Meat','Fish','Soup','Cookies']
Таким образом, в categories[0] хранится 'Main dish', а в categories[4] — 'Cookies'. Всё очень просто. Я уверен, вы сможете придумать много других примеров использования списков.
До сих пор мы создавали списки, хранящие строки. Также можно создать списки, содержащие числа. Опираясь на список месяцев, мы сможем создать список дней в каждом из месяцев.
DaysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31]
Если мы захотим напечатать DaysInMonth[1] (для февраля), мы получим 28 — целое число. Обратите внимание, что я назвал список DaysInMonth. Я мог бы называть список 'daysinmonth' или даже 'X'… но такие названия нелегко читать. Правила хорошего программирования (их каждый истолковывает по-своему) гласят, что имена переменных должны быть легко читаемы. Мы обсудим их позже и также чуть позже мы поиграемся со списками.
До того, как мы перейдём к следующему примеру, давайте узнаем ещё кое-что о Python.
Больше о строках
Мы обсудили немного строки в части 1. Теперь давайте познакомимся с ними поближе. Строка — это набор символов и ничего более. В принципе можно рассматривать строки как массив из символов. Например, если мы присвоим переменной strng значение 'The time has come' и захотим посмотреть второй символ строки, то можно набрать:
strng = 'The time has come' print (strng[1])
Результат будет символ 'h'. Запомните: счёт начинается с 0, поэтому первый символ обозначается [0], второй — [1], третий — [2], и так далее. Если мы хотим отобразить символы начиная с положения 4 и заканчивая положением 8, то набираем:
print (strng[4:8])
результат будет 'time'. Как цикл for из первой части, счет остановится на 8, но не возвращает восьмой символ, которым является пробел после 'time'.
Чтобы найти длину строки используем функцию len():
print (len(strng))
Результатом будет 17. Если мы хотим найти, где в строке находится слово 'time', то набираем
pos = strng.find('time')
Теперь переменная pos равна 4, что означает, что строка 'time' в нашей строке начинается в положении 4. Если мы захотим найти слово или последовательность, которых нет в строке, как например:
pos = strng.find('apples')
значение переменной pos будет равно -1.
При помощи команды split можно получить отдельные слова в строке. Разделим строку по пробелам командой:
print (strng.split(' '))
которая вернёт список, состоящий из ['The', 'time', 'has', 'come']. Это очень мощная команда. Есть и другие операции над строками, которые мы рассмотрим позже.
Подстановка переменных
Есть ещё одна вещь, о которой я хочу рассказать до того, как мы перейдём к следующей программе-примеру. Если мы хотим напечатать строку, включающую текст и переменную, можно использовать подстановку переменных. Это просто. Если мы хотим подставить строку, мы пишем '%s' и затем говорим Python, что надо подставить. Например, чтобы напечатать название месяца из нашего списка, можно использовать:
print ('Month = %s' % months[0])
Эта команда выведет 'Month = Jan'. Если хотите подставить целое число, используйте '%d'. Рассмотрим пример ниже:
Months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] DaysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31] for cntr in range(0,12): print ('%s has %d days.' % (Months[cntr],DaysInMonth[cntr]))
Вывод этой программы:
Jan has 31 days. Feb has 28 days. Mar has 31 days. Apr has 30 days. May has 31 days. Jun has 30 days. Jul has 31 days. Aug has 31 days. Sep has 30 days. Oct has 31 days. Nov has 30 days. Dec has 31 days.
Здесь необходимо понять то, как используются одинарные и двойные кавычки. Если вы присваиваете переменной строку так:
st = 'The time has come'
st = "The time has come"
разницы никакой нет. Но если надо включить в строку одинарную кавычку, как в примере ниже:
st = 'He said he's on his way'
вы увидите ошибку синтаксиса. Надо делать так:
st = "He said he's on his way"
Думайте о кавычках так. Чтобы определить строку, нужно поместить её между кавычками — одна в начале строки, а другая в конце — и они должны совпадать. Если вам надо вставить кавычки внутрь, используйте другой тип внешних кавычек, как в примере сверху. У вас может появиться вопрос, а если я захочу определить строку подобную “She said “Don't Worry””? В таком случае можно определить её так:
st = 'She said "Don\'t Worry"'
Обратите внимание на обратный слэш перед одинарной кавычкой в 'Don't'. Он называется экранирующим символом и сообщает Python, что в этом случае надо напечатать одинарную кавычку, не считая её разграничителем строк. Существует много последовательностей управляющих символов. Некоторые из них: '\n' — новая строка, '\t' — табуляция. Мы рассмотрим их в одном из следующих примеров.
Назначение и сравнение
Чтобы понять следующий пример, нам надо узнать ещё кое-что. Во-первых, разницу между назначением и сравнением. Мы уже много раз использовали назначение в наших примерах. Если мы хотим присвоить переменной какое-либо значение, то используем оператор назначения — '=' (знак равно):
переменная = значение
Но если мы хотим сравнить переменную и значение, то используем оператор сравнения. Давайте проверим, равна ли переменная определённому значению. Для этого мы используем '==' (два знака равенства):
переменная == значение
Если у нас есть переменная под названием loop и мы хотим проверить, равна ли она 12, то мы используем:
if loop == 12:
Не думайте пока об if и двоеточии в этом примере. Просто запомните: для сравнения мы используем два знака равенства.
Комментарии
Далее, мы должны обсудить комментарии. Комментарии важны по нескольким причинам. Они не только говорят вам или другим людям, что вы пытаетесь делать, но и напомнят вам через полгода, что же вы хотели сделать. Когда вы будете писать много программ, комментарии станут важными. Также при их помощи вы заставите Python игнорировать какие-либо части кода. Чтобы закомментировать строку, поставьте перед ней знак '#'. Например:
Комментарии можно вставлять в любое место в строке, но помните, что Python проигнорирует всё, что идёт после '#'.
Операторы If
Теперь мы вернёмся к оператору «if», который мы вкратце обсудили ранее. Когда мы хотим принять решения, основываясь на значениях переменных, мы используем оператор if:
if loop == 12:
Эта команда проверяет переменную 'loop' и если её значение равно 12, мы делаем то, что написано в блоке ниже. В большинстве случаев, этого достаточно, но что если мы захотим сказать, что если переменная равна тому-то делай то-то, в противном случае — то-то. В псевдокоде это будет выглядеть так:
если x == y то делай то-то в противном случае делай что-то другое
а на Python — так:
if x == y: делай то-то else: делай что-то другое другие команды
Самое главное заключается в следующем:
Завершайте операторы if и else двоеточием.
Делайте ОТСТУПЫ в вашем коде.
Если у вас есть несколько проверяемых значений, можно использовать формат if/elif/else. Например:
x = 5 if x == 1: print ('X is 1') elif x < 6: print ('X is less than 6') elif x < 10: print ('X is less than 10') else: print ('X is 10 or greater')
Оператор while
В заключении мы рассмотрим простой пример оператора while. Этот оператор позволяет повторять цикл из действий несколько раз до достижения определенного порогового значения. Рассмотрим простой пример: присвоим переменной «loop» значение 1. Затем, пока значение переменной loop меньше или равно 10, выводить значение переменной «loop», прибавлять к нему 1 и продолжать до тех пор, пока переменная «loop» не станет больше 10, и выйти:
loop = 1 while loopЗапустив программу в консоли, мы увидим следующее:
1 2 3 4 5 6 7 8 9 10Это то, что мы хотели увидеть.
Следующий пример чуть более сложен, но всё-таки простой.
loop = 1 while loop == 1: response = input("Enter something or 'quit' to end => ") if response == 'quit': print ('quitting') loop = 0 else: print ('You typed %s' % response)В этом примере, мы рассматриваем всё вместе: оператор if, цикл while, команду input, последовательность для новой строки, операторы присваивания и сравнения — всё это в программе из 8 строк.
Если мы запустим этот пример, то увидим:
Enter something or 'quit' to end => FROG You typed FROG Enter something or 'quit' to end => bird You typed bird Enter something or 'quit' to end => 42 You typed 42 Enter something or 'quit' to end => QUIT You typed QUIT Enter something or 'quit' to end => quit quittingОбратите внимание на то, что при вводе 'QUIT' программа не завершила работу. Это потому, что мы сравниваем значение переменной response с 'quit' (response == 'quit'). 'QUIT' НЕ равно 'quit'.
Ещё один пример — и мы закончим урок в этом месяце. Предположим, что вы хотите проверить, может ли пользователь работать с вашей программой. Хотя этот пример не является самым лучшим, он хорошо показывает некоторые вещи, которые мы уже знаем. Короче говоря, мы запросим у пользователя его имя и пароль, сравним их с информацией внутри программы и примем решение на основании результатов сравнения. Мы используем два списка: в одном хранятся имена пользователей, в другом — пароли. Затем мы используем команду input для получения информации от пользователя и, наконец, операторы if/elif/else для проверки, может ли пользователь работать. Запомните: это не самый лучший способ. Мы рассмотрим другие способы в последующих уроках. Наш код показан в рамке справа.
Сохраните его как 'password_test.py', запустите и вводите разнообразные значения.
Мы ещё не обсудили одну команду в процедуре проверки, которая начинается с 'if usrname in users:'. Здесь мы проверяем, есть ли введённое имя пользователя в списке. Если да, мы запрашиваем положение имени пользователя в списке users. Затем мы получаем позицию имени пользователя в списке имён, чтобы получить пароль, который хранится в той же позиции в списке паролей. Например, имя John хранится в позиции 1 списка пользователей. Его пароль, 'dog' хранится в позиции 1 списка паролей. Таким образом, мы сопоставляем имя и пароль. Сейчас вам должен быть понятен смысл программы.
Для одного раза достаточно. В следующем месяце мы изучим функции и модули. А пока развлекайтесь с тем, что уже узнали.
Код к password_test.py
#!/usr/bin/env python3 #----------------------------------------------- #password_test.py # example of if/else, lists, assignments, input, # comments and evaluations #----------------------------------------------- # Assign the users and passwords users = ['Fred','John','Steve','Ann','Mary'] passwords = ['access','dog','12345','kids','qwerty'] #----------------------------------------------- # Get username and password usrname = input('Enter your username => ') pwd = input('Enter your password => ') #----------------------------------------------- # Check to see if user is in the list if usrname in users: position = users.index(usrname) #Get the position in the list of the users if pwd == passwords[position]: #Find the password at position print ('Hi there, %s. Access granted.' % usrname) else: print ('Password incorrect. Access denied.') else: print ("Sorry. I don't recognize you. Access denied.")
