Capitalize: примеры (PYTHON)
capitalize: strОписание метода capitalize
Метод capitalize() принадлежит к строковым методам Python и применяется для преобразования первого символа строки в верхний регистр, а всех остальных символов - в нижний регистр.
Этот метод часто используется для форматирования текстовых данных, например, при подготовке имен собственных или заголовков, когда требуется стандартизировать написание строк.
Синтаксис:str.capitalize()
Параметры:
Метод не принимает аргументов.
Возвращаемое значение:
Метод возвращает новую строку, где первый символ в верхнем регистре, а остальные - в нижнем. Исходная строка остается неизменной, так как строки в Python неизменяемы.
Если первый символ не является буквой (например, цифра или знак препинания), метод возвращает исходную строку, преобразовав в нижний регистр все последующие буквы, если они были в верхнем регистре.
Базовые примеры использования
Пример с простой строкой:
text = "hello WORLD"
result = text.capitalize()
print(result)Hello world
Пример со строкой, начинающейся с цифры:
text = "123hello"
result = text.capitalize()
print(result)123hello
Пример со строкой, где первый символ - не буква:
text = "-python"
result = text.capitalize()
print(result)-python
Пример с пустой строкой:
text = ""
result = text.capitalize()
print(repr(result))''
Пример с однобуквенной строкой:
text = "a"
result = text.capitalize()
print(result)A
Похожие строковые методы в Python
title(): преобразует первую букву каждого слова в строке в верхний регистр, остальные - в нижний. Отличие от capitalize() в обработке нескольких слов.
"hello world".title()'Hello World'
upper(): преобразует все символы строки в верхний регистр.
lower(): преобразует все символы строки в нижний регистр.
swapcase(): меняет регистр каждого символа на противоположный.
casefold(): агрессивное приведение к нижнему регистру, используется для сравнения строк без учета регистра.
Метод capitalize() предпочтителен, когда нужно привести к стандартному виду одиночное слово или строку, где только первый символ должен быть заглавным. Для заголовков или имен с несколькими словами больше подходит title().
Распространенные ошибки
Ожидание изменения исходной строки. Строки в Python неизменяемы, поэтому метод возвращает новую строку.
text = "hello"
text.capitalize()
print(text) # Ожидается 'Hello', но будет 'hello'hello
Попытка использовать метод на нестроковом объекте.
num = 123
result = num.capitalize()AttributeError: 'int' object has no attribute 'capitalize'
Непонимание поведения с неалфавитными первыми символами.
text = " hello"
result = text.capitalize()
print(repr(result)) # Первый символ - пробел' hello'
Ошибка при работе с None.
text = None
result = text.capitalize()AttributeError: 'NoneType' object has no attribute 'capitalize'
Изменения в последних версиях Python
Метод capitalize() не претерпел значительных изменений в recent версиях Python. Однако, в Python 3.8 и выше улучшена общая производительность строковых методов благодаря оптимизациям интерпретатора.
Важное уточнение: метод работает только с ASCII символами для изменения регистра. Для Unicode символов поведение может отличаться в зависимости от правил языка. Например, некоторые символы не имеют верхнего или нижнего регистра.
Расширенные примеры применения
Использование в списках с помощью map.
names = ["alice", "bOB", "charlie"]
capitalized = list(map(str.capitalize, names))
print(capitalized)['Alice', 'Bob', 'Charlie']
Обработка строки с кириллицей.
text = "привет мир"
result = text.capitalize()
print(result)Привет мир
Комбинация с другими строковыми методами.
text = " hello WORLD "
result = text.strip().capitalize()
print(repr(result))'Hello world'
Использование в генераторе словарей.
data = {"key1": "value one", "key2": "VALUE TWO"}
formatted = {k: v.capitalize() for k, v in data.items()}
print(formatted){'key1': 'Value one', 'key2': 'Value two'}Применение к многострочным строкам.
text = "hello\nworld"
lines = text.split('\n')
result = '\n'.join(line.capitalize() for line in lines)
print(result)Hello World
Обработка строк с символами из разных языков.
text = "istanbul"
result = text.capitalize()
print(result) # Турецкая 'i' не преобразуется в 'İ'Istanbul
Использование в пользовательской функции для форматирования имен.
def format_name(name):
return name.capitalize()
full_name = "john doe"
parts = full_name.split()
formatted = " ".join(format_name(part) for part in parts)
print(formatted)John Doe
Аналоги метода в других языках программирования
PHP: функция ucfirst() преобразует первый символ строки в верхний регистр, но не изменяет регистр остальных символов.
echo ucfirst("hello WORLD");Hello WORLD
JavaScript: метод toUpperCase() для первого символа можно комбинировать с slice(), так как отдельного метода нет.
let text = "hello world";
let result = text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
console.log(result);Hello world
Java: метод StringUtils.capitalize() из Apache Commons Lang или комбинация substring() и toUpperCase().
String result = WordUtils.capitalizeFully("hello WORLD");Hello World
SQL (PostgreSQL): функция INITCAP() работает аналогично Python title().
SELECT INITCAP('hello world');Hello World
C#: метод TextInfo.ToTitleCase() из CultureInfo.CurrentCulture.TextInfo.
string result = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("hello world");Hello World
Lua: нет встроенной функции, требуется написать свою.
Go: пакет strings имеет функцию Title(), но она работает как Python title().
import "strings"
result := strings.Title("hello world")Hello World
Kotlin: функция capitalize() устарела в пользу replaceFirstChar().
val result = "hello world".replaceFirstChar { it.uppercase() }Hello world
Отличия от Python: во многих языках нет прямого аналога, который также преобразует остальные символы в нижний регистр.