Строки
Строка представляет последовательность символов в кодировке Unicode, заключенных в кавычки. Причем для определения строк Python позволяет использовать как одинарные, так и двойные кавычики:
message = "Hello World!" print(message) # Hello World! name = 'Tom' print(name) # Tom
Если строка длинная, ее можно разбить на части и разместить их на разных строках кода. В этом случае вся строка заключается в круглые скобки, а ее отдельные части — в кавычки:
text = ("Laudate omnes gentes laudate " "Magnificat in secula ") print(text)
Если же мы хотим определить многострочный текст, то такой текст заключается в тройные двойные или одинарные кавычки:
''' Это комментарий ''' text = '''Laudate omnes gentes laudate Magnificat in secula Et anima mea laudate Magnificat in secula ''' print(text)
При использовани тройных одинарных кавычек не стоит путать их с комментариями: если текст в тройных одинарных кавычках присваивается переменной, то это строка, а не комментарий.
Управляющие последовательности в строке
Строка может содержать ряд специальных символов — управляющих последовательностей или escape-последовательности. Некоторые из них:
- \ : позволяет добавить внутрь строки слеш
- \’ : позволяет добавить внутрь строки одинарную кавычку
- \» : позволяет добавить внутрь строки двойную кавычку
- \n : осуществляет переход на новую строку
- \t : добавляет табуляцию (4 отступа)
Используем некоторые последовательностей:
text = "Message:\n\"Hello World\"" print(text)
Консольный вывод программы:
Message: "Hello World"
Хотя подобные последовательности могут нам помочь в некоторых делах, например, поместить в строку кавычку, сделать табуляцию, перенос на другую строку. Но они также могут и мешать. Например:
path = "C:\python\name.txt" print(path)
Здесь переменная path содержит некоторый путь к файлу. Однако внутри строки встречаются символы «\n», которые будут интерпретированы как управляющая последовательность. Так, мы получим следующий консольный вывод:
C:\python ame.txt
Чтобы избежать подобной ситуации, перед строкой ставится символ r
path = r"C:\python\name.txt" print(path)
Вставка значений в строку
Python позволяет встравивать в строку значения других переменных. Для этого внутри строки переменные размещаются в фигурных скобках <>, а перед всей строкой ставится символ f :
userName = "Tom" userAge = 37 user = f"name: age: " print(user) # name: Tom age: 37
В данном случае на место будет вставляться значение переменной userName. Аналогично на вместо будет вставляться значение переменной userAge.
Обращение к символам строки
И мы можем обратиться к отдельным символам строки по индексу в квадратных скобках:
string = "hello world" c0 = string[0] # h print(c0) c6 = string[6] # w print(c6) c11 = string[11] # ошибка IndexError: string index out of range print(c11)
Индексация начинается с нуля, поэтому первый символ строки будет иметь индекс 0. А если мы попытаемся обратиться к индексу, которого нет в строке, то мы получим исключение IndexError. Например, в случае выше длина строки 11 символов, поэтому ее символы будут иметь индексы от 0 до 10.
Чтобы получить доступ к символам, начиная с конца строки, можно использовать отрицательные индексы. Так, индекс -1 будет представлять последний символ, а -2 — предпоследний символ и так далее:
string = "hello world" c1 = string[-1] # d print(c1) c5 = string[-5] # w print(c5)
При работе с символами следует учитывать, что строка — это неизменяемый (immutable) тип, поэтому если мы попробуем изменить какой-то отдельный символ строки, то мы получим ошибку, как в следующем случае:
string = "hello world" string[1] = "R"
Мы можем только полностью переустановить значение строки, присвоив ей другое значение.
Перебор строки
С помощью цикла for можно перебрать все символы строки:
string = "hello world" for char in string: print(char)
Получение подстроки
При необходимости мы можем получить из строки не только отдельные символы, но и подстроку. Для этого используется следующий синтаксис:
- string[:end] : извлекается последовательность символов начиная с 0-го индекса по индекс end (не включая)
- string[start:end] : извлекается последовательность символов начиная с индекса start по индекс end (не включая)
- string[start:end:step] : извлекается последовательность символов начиная с индекса start по индекс end (не включая) через шаг step
string = "hello world" # с 0 до 5 индекса sub_string1 = string[:5] print(sub_string1) # hello # со 2 до 5 индекса sub_string2 = string[2:5] print(sub_string2) # llo # с 2 по 9 индекса через один символ sub_string3 = string[2:9:2] print(sub_string3) # lowr
Объединение строк
Одной из самых распространенных операций со строками является их объединение или конкатенация. Для объединения строк применяется операция сложения:
name = "Tom" surname = "Smith" fullname = name + " " + surname print(fullname) # Tom Smith
С объединением двух строк все просто, но что, если нам надо сложить строку и число? В этом случае необходимо привести число к строке с помощью функции str() :
name = "Tom" age = 33 info = "Name: " + name + " Age: " + str(age) print(info) # Name: Tom Age: 33
Повторение строки
Для повторения строки определенное количество раз применяется операция умножения:
print("a" * 3) # aaa print("he" * 4) # hehehehe
Сравнение строк
Особо следует сказать о сравнении строк. При сравнении строк принимается во внимание символы и их регистр. Так, цифровой символ условно меньше, чем любой алфавитный символ. Алфавитный символ в верхнем регистре условно меньше, чем алфавитные символы в нижнем регистре. Например:
str1 = "1a" str2 = "aa" str3 = "Aa" print(str1 > str2) # False, так как первый символ в str1 - цифра print(str2 > str3) # True, так как первый символ в str2 - в нижнем регистре
Поэтому строка «1a» условно меньше, чем строка «aa». Вначале сравнение идет по первому символу. Если начальные символы обоих строк представляют цифры, то меньшей считается меньшая цифра, например, «1a» меньше, чем «2a». Если начальные символы представляют алфавитные символы в одном и том же регистре, то смотрят по алфавиту. Так, «aa» меньше, чем «ba», а «ba» меньше, чем «ca». Если первые символы одинаковые, в расчет берутся вторые символы при их наличии. Зависимость от регистра не всегда желательна, так как по сути мы имеем дело с одинаковыми строками. В этом случае перед сравнением мы можем привести обе строки к одному из регистров. Функция lower() приводит строку к нижнему регистру, а функция upper() — к верхнему.
str1 = "Tom" str2 = "tom" print(str1 == str2) # False - строки не равны print(str1.lower() == str2.lower()) # True
Функции ord и len
Поскольку строка содержит символы Unicode, то с помощью функции ord() мы можем получить числовое значение для символа в кодировке Unicode:
print(ord("A")) # 65
Для получения длины строки можно использовать функцию len() :
string = "hello world" length = len(string) print(length) # 11
Поиск в строке
С помощью выражения term in string можно найти подстроку term в строке string. Если подстрока найдена, то выражение вернет значение True , иначе возвращается значение False :
string = "hello world" exist = "hello" in string print(exist) # True exist = "sword" in string print(exist) # False
Как добавить в начало строки n символов на python?
Есть строка из произвольного количества символов, как можно добавить в её начало n символов с? rjust не подходит. Сейчас делаю, так, но думаю, есть что-то лучше.
s = str().rjust(n, c) + s
Отслеживать
задан 20 июл 2021 в 12:50
527 1 1 золотой знак 3 3 серебряных знака 15 15 бронзовых знаков
Это учебное задание? Пожалуйста, добавьте в вопрос ваши попытки решить его.
20 июл 2021 в 12:54
@StanislavVolodarskiy, не учебное, обычно когда добавляю пример, пишут, что всё и так нормально.
20 июл 2021 в 13:03
@Максим, чтобы получить строку из n одинаковых символов, нужно символ умножить на количество. Никаких особых ухищрений, как у вас в вопросе, тут не нужно.
20 июл 2021 в 13:13
@insolor, я думал, для этого есть специальная функция.
20 июл 2021 в 13:19
А чем оператор умножения не устраивает?
20 июл 2021 в 13:20
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
c = 'u' # символ n = 4 # количество раз was_str = 'данная строка' new_str = c * n print(new_str + was_str)
Отслеживать
ответ дан 20 июл 2021 в 12:56
21 2 2 бронзовых знака
Исходя из предложенных ответов делаю вывод, чтобы добавить строке s в начало n символов c, достаточно следующего кода
s = c * n + s
Отслеживать
ответ дан 20 июл 2021 в 13:33
527 1 1 золотой знак 3 3 серебряных знака 15 15 бронзовых знаков
Можно сделать новую строку через формат строки для питона 3.6+:
n = 5 prefix = 'hello' string = 'John' comb = f''
Для более ранних версий питона можно сделать так:
comb = '<><>'.format(prefix * n, string)
Отслеживать
8,571 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков
ответ дан 20 июл 2021 в 15:08
Andy Pavlov Andy Pavlov
3,884 10 10 серебряных знаков 16 16 бронзовых знаков
Элементарно, ка то так:
initial_str = "ABCDEF" n = input() res = int(n)*"c" + initial_str
Отслеживать
ответ дан 20 июл 2021 в 12:56
7,797 13 13 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
- python
- python-3.x
- строки
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Строки. Функции и методы строк

Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.
Базовые операции
- Конкатенация (сложение)
При вызове методов необходимо помнить, что строки в 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, которые облегчат вашу жизнь