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

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

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

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

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

  • Как работать с проблемными строками, например, с апострофами, с помощью str.capcase()

  • Как проверить, является ли строка уже регистром заголовка в Python, используя метод str.istitle()

Оглавление

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

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

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

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

Давайте рассмотрим пример того, как вы можете использовать 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!"

# Возникают некоторые проблемы с апострофами и точками
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
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, мы можем написать следующую функцию для использования регулярных выражений для преобразования строки в заголовочный регистр:

# Использование регулярных выражений для преобразования строки в заголовочный регистр
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
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() для проверки, находится ли строка уже в версии с заглавными буквами.

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

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

Last updated