Работа со строками: основы Python 3

Раздел: Основы Python -> Строки

Основные операции со строками

Как создать строку в Python?

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

s1 = 'Привет'
s2 = "Мир"

вывести номер строки python (вывод номера строки в python)

'Привет'
'Мир'

вывести первый символ строки python (вывести первый символ строки в python)

Альтернативные способы создания

Тройные кавычки позволяют записывать многострочные строки:

s3 = '''Первая строка
Вторая строка'''

вывести символ строки python (вывод символа строки в python)

'Первая строка\nВторая строка'

вывести длину строки python (вывести длину строки в python)

Raw-строки (префикс r) отключают интерпретацию escape-последовательностей:

s4 = r'C:\new\folder'

вывести элемент строки python (вывод конкретного символа строки по индексу в python)

'C:\\new\\folder'

заменить символ на другой python (замена символа в строке на python)

Функция str() преобразует любой объект в строку:

s5 = str(42)

заменить текст python (замена подстроки в строке в python)

'42'

замена символов python (замена символов в строке python)

Распространенная ошибка - путаница с кавычками внутри строки. Например, 'It\'s ok' требует экранирования. Решение: использовать разные типы кавычек, например "It's ok".


Как получить отдельный символ или часть строки?

Индексация через квадратные скобки: первый символ имеет индекс 0, последний -1. Срезы задаются форматом [start:stop:step].

s = 'Python'
print(s[0])   # первый символ
print(s[-1])  # последний символ
print(s[1:4]) # со второго по четвёртый (не включая)
print(s[::2]) # каждый второй

Python заменить число (замена числа в python (например, в строке))

P
n
yth
Pto

Python первое слово в строке (извлечение первого слова из строки в python)

Можно использовать встроенный объект slice:

sl = slice(1, 5, 2)
print(s[sl])

Python часть текста (извлечение подстроки из строки в python)

yh

Python последнее слово в строке (извлечение последнего слова из строки в python)

Метод .__getitem__() редко применяется напрямую.

Выход за границы строки вызывает IndexError. Перед индексацией стоит проверять длину через len().


Как изменить регистр символов?

Основные методы строк: .upper(), .lower(), .title(), .capitalize().

s = 'привет МИР'
print(s.upper())
print(s.lower())
print(s.title())
print(s.capitalize())

индекс элемента строки python (получение индекса символа или подстроки в строке python)

ПРИВЕТ МИР
привет мир
Привет Мир
Привет мир

Python номера символов (номера (индексы) символов в строке python)

.swapcase() меняет регистр на противоположный:

print(s.swapcase())

Print split python (использование split с print в python)

ПРИВЕТ мир

Python новая строка (использование символа новой строки в python)

.casefold() предназначен для агрессивного сравнения без учёта регистра (например, для немецкого 'ß'):

print('STRASSE'.casefold())

код пробела python (код символа пробела в python)

strasse

Python количество пробелов (количество пробелов в строке python)

Метод .title() делает заглавной каждую букву после пробела. Для строк с нестандартными разделителями (дефис) это может дать неверный результат. В таких случаях используют .capitalize() или собственные функции.


Как проверить, из каких символов состоит строка?

Методы проверки типа символов: .isalpha(), .isdigit(), .isalnum(), .isspace(), .islower(), .isupper().

s1 = 'Hello123'
s2 = '   '
print(s1.isalnum())
print(s2.isspace())

количество символов в тексте python (подсчет количества символов в строке python)

True
True

число цифр python (количество цифр числа в python)

.isdecimal(), .isnumeric() и .isidentifier() полезны для специфических проверок:

print('\u00b2'.isdigit())  # надстрочная двойка
print('\u00b2'.isdecimal())

Python string index (метод str.index в python)

True
False

Python join (метод join для строк в python)

Путаница между .isdigit() и .isdecimal(): первый возвращает True для символов вроде '²', второй - только для десятичных цифр. При проверке на целое число стоит использовать .isdecimal().


Как вставить переменные или выражения внутрь строки?

Современный и эффективный способ - f-строки (Python 3.6+). Синтаксис: f"текст {выражение}".

name = 'Анна'
age = 25
print(f"Меня зовут {name}, мне {age} лет.")

метод lower в python (метод lower для строк в python)

Меня зовут Анна, мне 25 лет.

метод replace python (метод replace в python)

Метод .format():

print("Меня зовут {}, мне {} лет.".format(name, age))

Strip строки python (метод strip для строк в python)

Меня зовут Анна, мне 25 лет.

длина слова python (определение длины слова в python)

Старый стиль с оператором %:

print("Меня зовут %s, мне %d лет." % (name, age))

символ пустой строки python (символ пустой строки в python)

Меня зовут Анна, мне 25 лет.

строки python определение (определение строк в python)

Простая конкатенация:

print("Меня зовут " + name + ", мне " + str(age) + " лет.")

параметры строки python (параметры строки в python)

Меня зовут Анна, мне 25 лет.

Python верхний регистр строка (перевод строки в верхний регистр в python)

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


Как разбить строку на список или наоборот, собрать из списка?

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

text = 'яблоко, груша, банан'
items = text.split(', ')
print(items)
new_text = ' | '.join(items)
print(new_text)

перенос python (перенос строки в python)

['яблоко', 'груша', 'банан']
яблоко | груша | банан

количество слов в строке python (подсчет количества слов в строке в python)

.splitlines() разбивает по переводам строк:

lines = 'строка1\nстрока2\nстрока3'
print(lines.splitlines())

сколько чисел в строке python (подсчёт количества чисел в строке в python)

['строка1', 'строка2', 'строка3']

Python найти строку (поиск подстроки в строке python)

.partition() делит строку на три части по первому вхождению разделителя:

print('a-b-c'.partition('-'))

позиция символа в строке python (поиск позиции символа в строке python)

('a', '-', 'b-c')

буква каждого слова python (получение первой буквы каждого слова в python)

.rsplit() работает аналогично, но справа.

.split() с пустыми аргументами удаляет лишние пробелы, а с явным разделителем сохраняет пустые строки. Например, 'a,b,'.split(',') вернет ['a','b',''].


Как заменить часть строки или удалить лишние символы?

Метод .replace() заменяет одну подстроку на другую. .strip(), .lstrip(), .rstrip() удаляют указанные символы с краёв строки (по умолчанию пробелы).

s = '  привет, мир!  '
print(s.replace('мир', 'Python'))
print(s.strip())

последняя буква слова python (получение последней буквы слова в python)

  привет, Python!  
привет, мир!

сделать букву заглавной python (преобразование буквы в заглавную в python)

.translate() с помощью таблицы замен (str.maketrans) позволяет массово заменять отдельные символы:

table = str.maketrans('abc', '123')
print('abc123'.translate(table))

Python значение в строку (преобразование значения в строку в python)

123123

строки python примеры (примеры работы со строками в python)

Методы .removeprefix() и .removesuffix() (Python 3.9+) удаляют только точное совпадение в начале/конце:

print('prefix_Hello'.removeprefix('prefix_'))

Python пробелы (пробелы в python)

Hello

.replace() заменяет все вхождения. Чтобы заменить только первое, используется параметр count. .strip() удаляет любые символы из переданной строки, а не только последовательности: 'abcd'.strip('ab') удалит и 'a', и 'b', но не 'c'.

- Python разделить (разделение строк в python)
- Python split string (разделение строки в python)
- Split слова python (разделение строки на слова с помощью split в python)

Расширенные примеры работы со строками

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

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

Пример
name = 'Мария'
age = 30
salary = 12345.678
print(f"{name!r} зарабатывает {salary:,.2f} руб. (возраст: {age})")
print(f"Выравнивание: {name:<10} | {age:>5} | {salary:^12.2f}")
'Мария' зарабатывает 12 345,68 руб. (возраст: 30)
Выравнивание: Мария      |    30 |  12345.68  

Escape-последовательности и raw-строки

Специальные комбинации начинаются с обратной косой черты: \n (новая строка), \t (табуляция), \\ (обратная косая), \' (одинарная кавычка). Raw-строки отключают их интерпретацию.

Пример
path = 'C:\\Users\\Name'
raw_path = r'C:\Users\Name'
print(path)
print(raw_path)
print('Символ табуляции:\tвот')
C:\Users\Name
C:\Users\Name
Символ табуляции:	вот

Unicode и символы по коду

Python 3 поддерживает Unicode напрямую. Символы можно задавать через escape-последовательности \u, \U, \N{имя}.

Пример
e = '\u00e9'  # латинская e с акутом
pi = '\u03c0'
smiley = '\U0001F600'
print(e, pi, smiley)
# Или по имени:
print('\N{LATIN SMALL LETTER E WITH ACUTE}')
é π ?
é

Многострочные строки и форматирование

f-строки могут быть многострочными, если использовать тройные кавычки.

Пример
name = 'Владимир'
message = f'''Уважаемый {name}!
Ваш заказ подтверждён.
С уважением,
команда поддержки.'''
print(message)
Уважаемый Владимир!
Ваш заказ подтверждён.
С уважением,
команда поддержки.

Преобразование строк в байты и обратно

Методы .encode() и .decode() используются для работы с байтовыми представлениями.

Пример
text = 'Привет'
bytes_data = text.encode('utf-8')
print(bytes_data)
decoded = bytes_data.decode('utf-8')
print(decoded)
b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
Привет

Поиск всех вхождений подстроки

Метод .find() находит первое вхождение. Для поиска всех можно использовать цикл.

Пример
text = 'раз, два, три, два, пять'
sub = 'два'
positions = []
start = 0
while True:
    pos = text.find(sub, start)
    if pos == -1:
        break
    positions.append(pos)
    start = pos + 1
print(positions)
[4, 14]

Проверка палиндрома

Использование срезов и метода .lower().

Пример
def is_palindrome(s):
    s = s.lower().replace(' ', '')
    return s == s[::-1]

print(is_palindrome('А роза упала на лапу Азора'))
print(is_palindrome('Python'))
True
False

Таблица частот символов

Сочетание .count() и set().

Пример
text = 'abracadabra'
freq = {ch: text.count(ch) for ch in set(text)}
print(freq)
{'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}

Строки в Python 3 - comments

En
Python 3 strings (python)