Как сделать первую букву каждого слова в строке заглавной?
Тема: Как преобразовать строку в заглавные буквы для каждого слова?
У меня есть строка:
s = 'the brown fox'
Мне нужно преобразовать её так, чтобы каждое слово начиналось с заглавной буквы. Ожидаемый результат:
'The Brown Fox'
Какой самый простой способ сделать это в Python?
5 ответ(ов)
Почему вы усложняете жизнь использованием JOIN и циклов, когда решение может быть простым и безопасным?
Просто сделайте это:
string = "the brown fox"
result = string[0].upper() + string[1:]
Таким образом, вы сразу делаете первую букву строки заглавной, не прибегая к лишним сложностям.
Вот готовый к копированию вариант ответа @jibberia:
def capitalize(line):
return ' '.join(s[:1].upper() + s[1:] for s in line.split(' '))
Этот код определяет функцию capitalize
, которая принимает строку line
и возвращает новую строку, в которой первая буква каждого слова превращена в заглавную. Функция разбивает исходную строку на слова с помощью метода split
, затем применяет к каждому слову выражение, которое делает первую букву заглавной и соединяет слова обратно в строку с помощью join
.
Если вам нужно сделать заглавной только первую букву строки, вы можете использовать метод capitalize()
:
>>> 'hello world'.capitalize()
'Hello world'
Однако, если вы хотите сделать заглавными первые буквы каждого слова в строке, используйте метод title()
:
>>> 'hello world'.title()
'Hello World'
Таким образом, в зависимости от ваших потребностей, вы можете выбрать подходящий метод для форматирования строки.
Если str.title()
не работает для вас, можете сделать капитализацию самостоятельно.
- Разбейте строку на список слов.
- Приведите к верхнему регистру первую букву каждого слова.
- Объедините слова в одну строку.
Решение в одну строку:
>>> ' '.join([s[0].upper() + s[1:] for s in "they're bill's friends from the UK".split(' ')])
"They're Bill's Friends From The UK"
Наглядный пример:
input = "they're bill's friends from the UK"
words = input.split(' ')
capitalized_words = []
for word in words:
title_case_word = word[0].upper() + word[1:]
capitalized_words.append(title_case_word)
output = ' '.join(capitalized_words)
Таким образом, вы получаете строку с правильно оформленными заглавными буквами.
Проблема с пустой строкой заключается в том, что при обращении к срезу [1:]
возникнет ошибка. Поэтому я бы использовал следующий код:
def my_uppercase(title):
if not title:
return ''
return title[0].upper() + title[1:]
Этот код корректно преобразует только первую букву строки в верхний регистр.
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Преобразование списка словарей в DataFrame pandas
Ошибка: "'dict' объект не имеет метода 'iteritems'"
Как явно освободить память в Python?
Выбор строки из pandas Series/DataFrame по целочисленному индексу