Capitalize: примеры (PYTHON)

Функция 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.

Пример python
names = ["alice", "bOB", "charlie"]
capitalized = list(map(str.capitalize, names))
print(capitalized)
['Alice', 'Bob', 'Charlie']

Обработка строки с кириллицей.

Пример python
text = "привет мир"
result = text.capitalize()
print(result)
Привет мир

Комбинация с другими строковыми методами.

Пример python
text = "  hello WORLD  "
result = text.strip().capitalize()
print(repr(result))
'Hello world'

Использование в генераторе словарей.

Пример python
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'}

Применение к многострочным строкам.

Пример python
text = "hello\nworld"
lines = text.split('\n')
result = '\n'.join(line.capitalize() for line in lines)
print(result)
Hello
World

Обработка строк с символами из разных языков.

Пример python
text = "istanbul"
result = text.capitalize()
print(result)  # Турецкая 'i' не преобразуется в 'İ'
Istanbul

Использование в пользовательской функции для форматирования имен.

Пример python
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: во многих языках нет прямого аналога, который также преобразует остальные символы в нижний регистр.

питон capitalize function comments

En
Capitalize Capitalize first character