Найти в Дзене
RuMicro

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

python # Создание строк
text = "Привет, мир!"
text2 = 'Одинарные кавычки'
text3 = """Многострочный
текст"""
# Основные методы
text.upper() # ВЕРХНИЙ РЕГИСТР
text.lower() # нижний регистр
text.strip() # Удаление пробелов по краям
text.replace("мир", "Python") # Замена подстроки
text.split(",") # Разбиение на список
", ".join(["a", "b"]) # Объединение списка в строку
text.startswith("При") # Проверка начала
text.endswith("ир") # Проверка конца python # f-строки (Python 3.6+)
name = "Иван"
age = 25
print(f"Меня зовут {name}, мне {age} лет")
# Метод format()
print("Меня зовут {}, мне {} лет".format(name, age))
print("{name}: {age}".format(name=name, age=age))
# %-форматирование (старый стиль)
print("Меня зовут %s, мне %d лет" % (name, age)) python # Чтение всего файла
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read()
# Построчное чтение
with open('file.txt', 'r', encoding='utf-8') as f:
for l
Оглавление

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

Создание и базовые методы

python

# Создание строк
text = "Привет, мир!"
text2 = 'Одинарные кавычки'
text3 = """Многострочный
текст"""

# Основные методы
text.upper() # ВЕРХНИЙ РЕГИСТР
text.lower() # нижний регистр
text.strip() # Удаление пробелов по краям
text.replace("мир", "Python") # Замена подстроки
text.split(",") # Разбиение на список
", ".join(["a", "b"]) # Объединение списка в строку
text.startswith("При") # Проверка начала
text.endswith("ир") # Проверка конца

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

python

# f-строки (Python 3.6+)
name = "Иван"
age = 25
print(f"Меня зовут {name}, мне {age} лет")

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

# %-форматирование (старый стиль)
print("Меня зовут %s, мне %d лет" % (name, age))

2. Чтение и запись файлов

python

# Чтение всего файла
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read()

# Построчное чтение
with open('file.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip())

# Запись в файл
with open('output.txt', 'w', encoding='utf-8') as f:
f.write("Новый текст\n")
f.writelines(["строка 1\n", "строка 2\n"])

# Добавление в конец файла
with open('file.txt', 'a', encoding='utf-8') as f:
f.write("Добавленная строка\n")

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

python

import re

text = "Мой email: user@example.com, телефон: +7 (123) 456-78-90"

# Поиск email
email = re.search(r'[\w\.-]+@[\w\.-]+', text)
print(email.group()) # user@example.com

# Поиск всех чисел
numbers = re.findall(r'\d+', text)
print(numbers) # ['7', '123', '456', '78', '90']

# Замена
clean = re.sub(r'[\+\-\(\)\s]', '', text)
print(clean)

# Разбиение по нескольким разделителям
words = re.split(r'[,\s]+', text)

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

python

# Кодирование/декодирование
text = "Привет"
encoded = text.encode('utf-8') # bytes
decoded = encoded.decode('utf-8') # str

# Нормализация Unicode
import unicodedata
text = "café"
normalized = unicodedata.normalize('NFKD', text)

# Проверка типов символов
text.isalpha() # Только буквы
text.isdigit() # Только цифры
text.isalnum() # Буквы и цифры
text.isspace() # Пробельные символы

5. Обработка больших текстов

python

# Использование генераторов
def read_large_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
yield line.strip()

# Обработка по частям
chunk_size = 1024 # 1KB
with open('large_file.txt', 'r', encoding='utf-8') as f:
while chunk := f.read(chunk_size):
process_chunk(chunk)

6. Специализированные библиотеки

NLTK для NLP

python

import nltk
nltk.download('punkt')
nltk.download('stopwords')

from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords

text = "Python отличный язык. Он прост в изучении."

# Токенизация
sentences = sent_tokenize(text)
words = word_tokenize(text)

# Удаление стоп-слов
stop_words = set(stopwords.words('russian'))
filtered = [w for w in words if w.lower() not in stop_words]

BeautifulSoup для HTML/XML

python

from bs4 import BeautifulSoup

html = "<p>Текст <a href='link'>ссылка</a></p>"
soup = BeautifulSoup(html, 'html.parser')

text = soup.get_text() # Извлечение текста
links = soup.find_all('a') # Поиск тегов

7. Практические примеры

Подсчет слов

python

from collections import Counter

def word_count(text):
words = re.findall(r'\b\w+\b', text.lower())
return Counter(words)

text = "Python Python java python c++ C++"
counts = word_count(text)
print(counts.most_common(2)) # [('python', 3), ('c++', 2)]

Очистка текста

python

def clean_text(text):
# Приведение к нижнему регистру
text = text.lower()
# Удаление пунктуации
text = re.sub(r'[^\w\s]', '', text)
# Удаление лишних пробелов
text = ' '.join(text.split())
return text

Поиск и замена в файлах

python

import os

def replace_in_files(directory, search, replace, ext='.txt'):
for filename in os.listdir(directory):
if filename.endswith(ext):
path = os.path.join(directory, filename)
with open(path, 'r', encoding='utf-8') as f:
content = f.read()

new_content = content.replace(search, replace)

with open(path, 'w', encoding='utf-8') as f:
f.write(new_content)

8. Оптимизация производительности

python

# Используйте join вместо конкатенации в циклах
# Плохо:
result = ""
for s in strings:
result += s # Создает новый объект каждый раз

# Хорошо:
result = "".join(strings)

# Используйте генераторы для больших данных
sum(len(line) for line in large_file) # Экономит память

Полезные советы:

  • Всегда указывайте encoding='utf-8' при работе с файлами
  • Используйте with для автоматического закрытия файлов
  • Для сложной обработки текста используйте специализированные библиотеки
  • При работе с большими данными используйте потоковую обработку