← Назад к вопросам
Как сделать строку с большой буквы в Python?
1.3 Junior🔥 191 комментариев
#Python Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Преобразование строк в Python: методы для работы с прописными буквами
Python предоставляет несколько встроенных методов для преобразования регистра букв в строках. Выбор метода зависит от конкретной задачи.
upper() - преобразование в ВЕРХНИЙ РЕГИСТР
text = "hello world"
result = text.upper()
print(result) # HELLO WORLD
# Применимо ко всем символам строки
text2 = "Hello World 123!"
print(text2.upper()) # HELLO WORLD 123!
lower() - преобразование в нижний регистр
text = "HELLO WORLD"
result = text.lower()
print(result) # hello world
# Применимо ко всем символам
text2 = "Hello World 123!"
print(text2.lower()) # hello world 123!
capitalize() - первая буква большая, остальные маленькие
text = "hello world"
result = text.capitalize()
print(result) # Hello world
# Остальные символы становятся LOWERCASE
text2 = "hELLO WORLD"
print(text2.capitalize()) # Hello world
title() - каждое слово с большой буквы
text = "hello world python"
result = text.title()
print(result) # Hello World Python
# Разделитель - любой неалфавитный символ
text2 = "hello-world python_test"
print(text2.title()) # Hello-World Python_Test
swapcase() - меняет РЕГИСТР
text = "Hello World"
result = text.swapcase()
print(result) # hELLO wORLD
# Каждый символ переворачивается
text2 = "aBcDeF"
print(text2.swapcase()) # AbCdEf
casefold() - агрессивное приведение к нижнему регистру
# Для специальных символов и других языков
text = "Straße" # немецкое слово
print(text.lower()) # straße
print(text.casefold()) # strasse
# Полезно при сравнении
text1 = "ß"
text2 = "ss"
print(text1.lower() == text2.lower()) # False
print(text1.casefold() == text2.casefold()) # True
isupper() / islower() / istitle() - проверка регистра
text1 = "HELLO"
text2 = "hello"
text3 = "Hello"
print(text1.isupper()) # True
print(text2.islower()) # True
print(text3.istitle()) # True
# Для пустых строк и без букв
print("123".isupper()) # False
print("".isupper()) # False
Практические примеры
Нормализация пользовательского ввода:
def normalize_email(email):
return email.lower().strip()
email = " USER@EXAMPLE.COM "
print(normalize_email(email)) # user@example.com
def normalize_name(name):
return name.title()
name = "john doe"
print(normalize_name(name)) # John Doe
Форматирование логов и заголовков:
def format_log_level(level):
return level.upper()
def format_section_title(title):
return title.title()
print(format_log_level("debug")) # DEBUG
print(format_section_title("user info")) # User Info
Сравнение без учета регистра:
def compare_case_insensitive(str1, str2):
return str1.lower() == str2.lower()
print(compare_case_insensitive("Hello", "HELLO")) # True
print(compare_case_insensitive("Hello", "hello")) # True
print(compare_case_insensitive("Hello", "world")) # False
Преобразование для URL-ов:
title = "My Amazing Blog Post"
slug = title.lower().replace(" ", "-")
print(slug) # my-amazing-blog-post
# С удалением спец-символов
import re
slug = re.sub(r'[^a-z0-9-]+', '', title.lower().replace(" ", "-"))
print(slug) # my-amazing-blog-post
Строки из разных языков
# Русский
text = "Привет мир"
print(text.upper()) # ПРИВЕТ МИР
print(text.lower()) # привет мир
print(text.capitalize()) # Привет мир
# Украинский
text = "Привіт світ"
print(text.upper()) # ПРИВІТ СВІТ
# Китайский (нет понятия регистра)
text = "你好世界"
print(text.upper()) # 你好世界 (не изменится)
Таблица методов
| Метод | Входные данные | Результат |
|---|---|---|
| upper() | "hello world" | "HELLO WORLD" |
| lower() | "HELLO WORLD" | "hello world" |
| capitalize() | "hello world" | "Hello world" |
| title() | "hello world" | "Hello World" |
| swapcase() | "Hello World" | "hELLO wORLD" |
| casefold() | "Straße" | "strasse" |
Лучшие практики
- Используйте lower() для нормализации при сравнении
- Используйте capitalize() или title() для отображения пользователю
- Помните, что isupper()/islower() возвращают False для пустых строк
- Для специальных символов используйте casefold()
- Не переделывайте то, что уже есть в стандартной библиотеке
- Помните про производительность - методы быстрые, но при работе с миллионами строк может быть узким местом