Python для начинающих: строки и их обработка
Основные операции со строками в Python
Как создать строку в Python?
Самый простой способ - заключить текст в одинарные или двойные кавычки. Выбор кавычек не влияет на работу, но позволяет легко вставлять кавычки другого типа внутрь строки.
s1 = 'Привет, мир!'
s2 = "Hello, world!"
print(s1)
print(s2)Python strip (метод strip в python)
Привет, мир! Hello, world!
Python повторить строку (повторение строки в python)
Цель:
создание простой строки для хранения текста.Как создать многострочную строку или строку с экранированием?
Для длинных строк или строк, содержащих переносы, используются тройные кавычки (''' или """). Сырые строки (raw strings) с префиксом r отключают обработку обратной косой черты, что удобно для регулярных выражений или путей Windows.
multiline = '''Это строка
с переносом'''
raw_path = r'C:\Users\Name' # обратная косая черта не экранируется
print(multiline)
print(raw_path)Tuple в str python (преобразование кортежа в строку в python)
Это строка с переносом C:\Users\Name
Python объект в строку (преобразование объекта в строку в python)
Частая ошибка - забыть закрыть тройные кавычки или перепутать их с обычными. Если внутри тройных кавычек встречаются три одинаковые кавычки, их нужно экранировать.
Как получить длину строки?
Функция len() возвращает количество символов в строке.
text = "Python"
print(len(text)) # 6Python convert string (преобразование строк в python)
6
Python str to bytes (преобразование строки в байты в python)
Случаи использования:
проверка длины пароля, подсчет символов в сообщении.Можно ли получить длину другим способом?
Технически можно перебирать строку в цикле и считать символы, но len() оптимальнее. Не рекомендуется изобретать велосипед.
Ошибка: len() считает количество Unicode-символов, а не байтов. Для байтовой длины используйте len(string.encode()).
Как получить символ по индексу или сделать срез?
Индексация строк в Python начинается с 0. Для доступа к одному символу используются квадратные скобки. Срез позволяет получить подстроку: s[start:stop:step].
word = "Программирование"
print(word[0]) # П
print(word[1:5]) # рогр
print(word[::-1]) # еинавориммаргоП (обратный порядок)функция разделить python (разделение строки на список в python)
П рогр еинавориммаргоП
вывести символ строки python (вывод символа строки в python)
Цель:
извлечение частей строки, реверс, проверка палиндромов.Как использовать отрицательные индексы?
Отрицательные индексы считают с конца строки: -1 - последний символ.
s = "Python"
print(s[-1]) # n
print(s[-3:]) # honвывести длину строки python (вывести длину строки в python)
n hon
вывести элемент строки python (вывод конкретного символа строки по индексу в python)
Индекс за пределами строки вызывает IndexError. Срезы безопасны: если индекс выходит за границы, возвращается пустая строка.
Как изменить регистр букв?
Методы upper(), lower(), title() и capitalize() возвращают новую строку с изменённым регистром.
text = "приВЕТ, Мир!"
print(text.upper()) # ПРИВЕТ, МИР!
print(text.lower()) # привет, мир!
print(text.title()) # Привет, Мир!
print(text.capitalize()) # Привет, мир!задания на строки python (задания на строки в python)
ПРИВЕТ, МИР! привет, мир! Привет, Мир! Привет, мир!
замена символов python (замена символов в строке python)
Случаи:
стандартизация пользовательского ввода, приведение к единому регистру для сравнения.Как работает swapcase()?
Метод меняет каждую букву на противоположный регистр.
print("Python3.8".swapcase()) # pYTHON3.8Python первое слово в строке (извлечение первого слова из строки в python)
pYTHON3.8
Python последнее слово в строке (извлечение последнего слова из строки в python)
Методы не изменяют исходную строку, так как строки неизменяемы. Результат нужно сохранять в новую переменную.
Как удалить лишние пробелы в начале и конце строки?
Метод strip() удаляет пробельные символы (пробелы, табуляции, переносы) с обоих концов. lstrip() и rstrip() удаляют только слева или справа.
s = " пробелы вокруг "
print(repr(s.strip()))
print(repr(s.lstrip()))
print(repr(s.rstrip()))индекс элемента строки python (получение индекса символа или подстроки в строке python)
'пробелы вокруг' 'пробелы вокруг ' ' пробелы вокруг'
Python номера символов (номера (индексы) символов в строке python)
Цель:
очистка ввода пользователя, удаление лишних пробелов из файлов.Можно ли удалить произвольные символы, а не только пробелы?
Да, strip() принимает строку с символами, которые нужно удалить.
url = "www.example.com"
print(url.strip("wcom.")) # examplePython новая строка (использование символа новой строки в python)
example
Важно: метод удаляет символы по одному, не как подстроку. Порядок не важен. Если нужно удалить точное совпадение с края, используйте removeprefix() (Python 3.9+) или срезы.
Расширенные примеры работы со строками
1. Форматирование с f-строками и выравнивание
name = "Анна"
age = 30
# Выравнивание по ширине 10 символов
output = f"{name:>10} {age:<5}"
print(output)
# Числа с плавающей точкой
pi = 3.14159265
print(f"{pi:.2f}") # 3.14
# Обращение к атрибутам
class Person:
def __init__(self, name):
self.name = name
p = Person("Борис")
print(f"{p.name!r}") # 'Борис' (repr)
Анна 30 3.14 'Борис'
2. Трансляция символов с помощью str.translate()
# Замена латинских букв на похожие кириллические (шутка)
table = str.maketrans({
'a': 'а', 'e': 'е', 'o': 'о', 'c': 'с', 'y': 'у'
})
original = "access code"
result = original.translate(table)
print(result) # ассеss соdе (частично заменено)
ассеss соdе
3. Работа с Unicode и нормализация
import unicodedata
# Строка с составными символами
s = "café" # é - один символ
s2 = "cafe\u0301" # e + комбинированный акут (два символа)
print(len(s), len(s2)) # 4, 5
# Нормализация NFC - составная форма
norm = unicodedata.normalize('NFC', s2)
print(len(norm), norm) # 4 café
print(s == norm) # True
4 5 4 café True
4. Разделение строки с помощью регулярных выражений (re.split)
import re
text = "apple, banana; cherry. date: fig"
# Разделить по одному из символов: , ; . :
parts = re.split(r'[,;.:]', text)
print(parts)
# С сохранением разделителей
parts2 = re.split(r'([,;.:])', text)
print(parts2)
['apple', ' banana', ' cherry', ' date', ' fig'] ['apple', ',', ' banana', ';', ' cherry', '.', ' date', ':', ' fig']
5. Эффективная конкатенация большого количества строк
# Плохой способ (создает много промежуточных строк)
result = ''
for i in range(1000):
result += str(i)
# Хороший способ - join
parts = [str(i) for i in range(1000)]
result_join = ''.join(parts)
# Сравнение скорости не приводится, но join существенно быстрее
(результат опущен, так как строка длинная)
6. Проверка строки на соответствие шаблону с помощью startswith и endswith
file_list = ["image1.jpg", "photo.png", "doc.pdf", "archive.tar.gz"]
for f in file_list:
if f.endswith(('.jpg', '.png')):
print(f"Изображение: {f}")
elif f.startswith('archive'):
print(f"Архив: {f}")
Изображение: image1.jpg Изображение: photo.png Архив: archive.tar.gz