# Преобразование строки в формат заголовка в Python с помощью str.title()

Быть способным работать со строками является необходимым навыком для разработчика на Python любого уровня. Одной из самых распространённых операций, с которыми вам придётся столкнуться, является необходимость изменить регистр символов. Например, вы можете захотеть преобразовать строку в стиль заголовка, означающий, что первая буква каждого слова в строке написана с заглавной буквы.

В этом руководстве вы научитесь использовать методы str.title() и str.istitle() для преобразования строки в заголовочный регистр в Python. Это может быть чрезвычайно полезно, если вы переименовываете файлы в Python и хотите привести их имена в порядок.

К концу этого руководства вы научитесь следующему:

* Как преобразовать строку в регистр заголовка в Python с помощью метода `str.title()`
* Как работать с проблемными строками, например, с апострофами, с помощью `str.capcase()`
* Как проверить, является ли строка уже регистром заголовка в Python, используя метод `str.istitle()`

Оглавление

* [Как преобразовать строку в регистр заголовка в Python с помощью `str.title()`](#kak-preobrazovat-stroku-v-registr-zagolovka-v-python-s-pomoshyu-str.title)
* [Как преобразовать строку в регистр заголовка с апострофами в Python с помощью `string.capwords()`](#kak-preobrazovat-stroku-v-registr-zagolovka-s-apostrofami-v-python-s-pomoshyu-string.capwords)
* [Использование регулярных выражений для оформления заголовка строки в Python](#ispolzovanie-regulyarnykh-vyrazhenii-dlya-oformleniya-zagolovka-stroki-v-python)
* [Как проверить, является ли строка регистром заголовка в Python](#kak-proverit-yavlyaetsya-li-stroka-registrom-zagolovka-v-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Как преобразовать строку в регистр заголовка в Python с помощью str.title()

Преобразование строки в формат с заглавной буквы каждого слова подразумевает, что первая буква каждого слова будет в верхнем регистре, а остальные буквы в нижнем регистре. Например, строка `'welcome to` bemind будет преобразована в `'Welcome To` Bemind`'`. Это настолько обычная операция, что в Python есть встроенный метод для ее выполнения.

**Как преобразовать строку в регистр заголовка в Python?**

Чтобы преобразовать строку в заглавные буквы в Python, вы можете использовать метод `str.title()`, который делает каждое слово в строке с заглавной буквы. Поскольку строки неизменяемы, старая строка уничтожается, и возвращается новая строка.

Давайте рассмотрим пример того, как вы можете использовать Python для преобразования строки в формат заголовка:

```python
# Преобразование строки в заголовочный регистр в Python
text = 'welcome to bemind.gitbook.io'
title = text.title()

print(f'{text} --> {title}')

# Возвращает:
# welcome to bemind.gitbook.io --> Welcome To Bemind.Gitbook.Io
```

Давайте разберем, что мы сделали в предыдущем блоке кода:

1. Мы загрузили строку, используя переменную `text`
2. Затем мы создали новую строку, `title`, которая является результатом применения метода `.title()` к исходной строке.
3. Наконец, мы вывели на печать наши две строки, чтобы сравнить их

Имейте в виду, что строки в Python являются неизменяемыми, то есть их нельзя модифицировать. В приведенном выше примере мы присвоили преобразованную строку новой переменной. Однако мы могли бы просто переназначить строку самой себе. Это уничтожило бы предыдущую строку и создало бы новую со строкой в виде заголовка.

### Как преобразовать строку в регистр заголовка с апострофами в Python с помощью `string.capwords()`

Метод Python str.title() определяет каждое отдельное слово как новое слово. Из-за этого метод может привести к некоторым неожиданным результатам. Например, давайте рассмотрим строку: \`"Посетим bemind.gitbook.io!"

```python
# Возникают некоторые проблемы с апострофами и точками
text = "Пойдем на bemind.gitbook.io!"
title = text.title()

print(f'{text} --> {title}')

# Возвращает:
# Пойдем на Bemind.Gitbook.Io! --> Пойдем На Bemind.Gitbook.Io!
```

Когда мы видим, что возвращает Python, это не совсем то, что мы предполагали! Например, буква `'s'` в слове Let’s написана с большой буквы. Аналогично, буква I в .io тоже написана с большой буквы.

Поскольку Python предназначен для того, чтобы быть независимым от языка, он использует базовый метод для определения новых слов. Чтобы исправить это, мы можем использовать встроенную функцию `string.capwords()`. Для этого сначала нам нужно импортировать функцию:

```python
# Преобразование строки в заголовочный регистр в Python
from string import capwords
text = "Пойдем на bemind.gitbook.io!"
title = capwords(text)

print(f'{text} --> {title}')

# Возвращает:
# Пойдем на Bemind.gitbook.io! --> Пойдем На Bemind.gitbook.io!
```

В приведенном выше блоке кода мы импортировали функцию `capwords()` из библиотеки string. Затем мы повторили наш предыдущий код, однако передали оригинальную строку в эту функцию.

Под капотом функция разделяет строку, используя заданный разделитель. Затем она преобразует первую букву каждой подстроки в заглавную и соединяет подстроки обратно вместе.

### Использование регулярных выражений для оформления заголовка строки в Python

Как и в приведенном выше примере, мы можем использовать регулярные выражения для преобразования проблемной строки в верхний регистр каждого слова. Лично я предпочитаю метод выше, поскольку регулярные выражения могут быть немного сложными для чтения. Однако я хотел включить этот пример для полноты.

Согласно документации Python, мы можем написать следующую функцию для использования регулярных выражений для преобразования строки в заголовочный регистр:

```python
# Использование регулярных выражений для преобразования строки в заголовочный регистр
import re

def titlecase(s):
    return re.sub(r"[A-Za-z]+('[A-Za-z]+)?", lambda mo: mo.group(0).capitalize(), s)

text = "Пойдем на bemind.gitbook.io!"
title = titlecase(text)

print(f'{text} --> {title}')

# Возвращает:
# Пойдем на bemind.gitbook.io! --> Пойдем на Bemind.Gitbook.Io!
```

В этом случае мы указали, что Python должен игнорировать символы после символа апострофа. Мы видим, что согласно приведенному выше блоку кода, это работало как задумано. Однако это также привело к тому, что символ после точки был написан с заглавной буквы.

Как было сказано, я считаю этот метод излишне сложным. Функция `capwords()` из библиотеки `string` значительно проще в реализации и намного легче в понимании.

### Как проверить, является ли строка регистром заголовка в Python

Python также предлагает удобный метод для проверки того, написана ли строка с заглавной буквы каждого слова. Метод `str.istitle()` не принимает аргументов, но возвращает булево значение. Возвращаемое значение указывает, написана ли строка с заглавных букв каждого слова или нет.

Давайте рассмотрим пример. Мы предоставим две строки: одна написана с заглавной буквы в начале каждого слова, а другая нет. Затем мы можем использовать метод `.istitle()` для проверки того, написаны ли они с заглавной буквы в начале каждого слова:

```python
# Проверка, является ли строка заголовочным регистром в Python
titled = 'Добро Пожаловать На Bemind.Gitbook.Io!'
not_titled = 'добро Пожаловать на Bemind.Gitbook.Io'

print(f'titled является заголовочным регистром: {titled.istitle()}')
print(f'not_titled является заголовочным регистром: {not_titled.istitle()}')

# Возвращает:
# titled является заголовочным регистром: True
# not_titled является заголовочным регистром: False
```

Давайте разберем, что мы делаем в приведенном выше блоке кода:

1. Мы создали две строки, одна из которых была написана с заглавной буквы, а другая — нет.
2. Мы затем использовали f-строки, чтобы выводить на печать, является ли строка строкой с заглавных букв или нет, применяя метод `.istitle()` к обеим строкам.

Этот метод достаточно прост, но позволяет легко проверить состояние ваших строк или работоспособность преобразования.

### Заключение

В этом уроке вы научились преобразовывать строки в стиле заголовков с использованием Python. Умение работать со строками является полезным навыком для любого разработчика на Python. Например, когда вы переименовываете файлы, вы можете захотеть применить к именам файлов стиль заголовков.

Сначала вы научились использовать метод строки `.title()` для преобразования строки в версию с заглавными буквами. Затем вы научились настраивать поведение при работе с более сложными строками, такими как строки с апострофами или точками, используя функцию `string.capwords()` и регулярные выражения. Наконец, вы узнали, как использовать метод `istitle()` для проверки, находится ли строка уже в версии с заглавными буквами.

### Дополнительные ресурсы

Чтобы узнать больше о схожих темах, ознакомьтесь с нижеприведенными учебными пособиями:

* Как удалить первый или последний символ из строки Python
* Строка Python содержит: проверьте, содержит ли строка подстроку
* [str.title(): официальная документация Python](https://docs.python.org/3/library/stdtypes.html#str.title)
