Работа с текстом

4. Работа с текстом #

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


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

Стандартные способы форматирования #

  1. Оператор %:

    name = "Alice"
    age = 25
    print("Name: %s, Age: %d" % (name, age))
    
  2. Метод .format():

    name = "Bob"
    age = 30
    print("Name: {}, Age: {}".format(name, age))
    print("Name: {0}, Age: {1}".format(name, age))  # По индексам
    print("Name: {name}, Age: {age}".format(name="Charlie", age=35))  # По именам
    
  3. f-строки (начиная с Python 3.6):

    name = "Diana"
    age = 28
    print(f"Name: {name}, Age: {age}")
    

Форматирование чисел #

value = 123.4567
print(f"{value:.2f}")  # 2 знака после запятой: 123.46
print(f"{value:10.2f}")  # Выравнивание по правому краю: '    123.46'
print(f"{value:.2%}")  # Процент: 12345.67%

4.2. Регулярные выражения #

Регулярные выражения (regex) используются для поиска, замены и проверки шаблонов в строках. Python предоставляет модуль re для работы с ними.

Основные функции модуля re #

  1. re.match() — проверяет соответствие шаблону в начале строки.
  2. re.search() — ищет первое совпадение в строке.
  3. re.findall() — возвращает список всех совпадений.
  4. re.sub() — заменяет совпадения на указанный текст.

Пример использования #

import re

# Поиск совпадения
pattern = r"\d+"  # Ищем числа
text = "There are 123 apples and 456 oranges."
result = re.findall(pattern, text)
print(result)  # ['123', '456']

# Замена
replaced = re.sub(r"apples", "bananas", text)
print(replaced)  # "There are 123 bananas and 456 oranges."

# Проверка шаблона
if re.match(r"^There", text):  # Начинается с "There"
    print("Pattern found!")

Шаблоны в регулярных выражениях #

  • \d — любая цифра.
  • \D — любой символ, кроме цифры.
  • \w — буква, цифра или _.
  • \W — любой символ, кроме \w.
  • \s — пробельный символ.
  • \S — любой символ, кроме пробела.
  • ^ — начало строки.
  • $ — конец строки.
  • .* — любое количество любых символов.

Пример сложного шаблона:

email = "example@mail.com"
pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
if re.match(pattern, email):
    print("Valid email!")

4.3. Работа с Unicode и кодировками #

Unicode в Python #

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

Пример работы с Unicode:

text = "Привет, мир!"
encoded = text.encode("utf-8")  # Кодирование в байты
print(encoded)  # b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82, \xd0\xbc\xd0\xb8\xd1\x80!'

decoded = encoded.decode("utf-8")  # Декодирование обратно в строку
print(decoded)  # "Привет, мир!"

Проверка символов Unicode #

char = "中"
print(char.isascii())  # False (не ASCII)
print(char.isalpha())  # True (буква)

Работа с кодировками файлов #

  1. Запись текста в файл с кодировкой:

    with open("file.txt", "w", encoding="utf-8") as f:
        f.write("Привет, мир!")
    
  2. Чтение текста из файла с кодировкой:

    with open("file.txt", "r", encoding="utf-8") as f:
        content = f.read()
        print(content)
    

Эти инструменты позволяют эффективно работать с текстами, обрабатывать строки, выполнять проверки шаблонов и учитывать разные кодировки.