8

Как сделать первую букву каждого слова в строке заглавной?

21

Тема: Как преобразовать строку в заглавные буквы для каждого слова?

У меня есть строка:

s = 'the brown fox'

Мне нужно преобразовать её так, чтобы каждое слово начиналось с заглавной буквы. Ожидаемый результат:

'The Brown Fox'

Какой самый простой способ сделать это в Python?

5 ответ(ов)

0

Почему вы усложняете жизнь использованием JOIN и циклов, когда решение может быть простым и безопасным?

Просто сделайте это:

string = "the brown fox"
result = string[0].upper() + string[1:]

Таким образом, вы сразу делаете первую букву строки заглавной, не прибегая к лишним сложностям.

0

Вот готовый к копированию вариант ответа @jibberia:

def capitalize(line):
    return ' '.join(s[:1].upper() + s[1:] for s in line.split(' '))

Этот код определяет функцию capitalize, которая принимает строку line и возвращает новую строку, в которой первая буква каждого слова превращена в заглавную. Функция разбивает исходную строку на слова с помощью метода split, затем применяет к каждому слову выражение, которое делает первую букву заглавной и соединяет слова обратно в строку с помощью join.

0

Если вам нужно сделать заглавной только первую букву строки, вы можете использовать метод capitalize():

>>> 'hello world'.capitalize()
'Hello world'

Однако, если вы хотите сделать заглавными первые буквы каждого слова в строке, используйте метод title():

>>> 'hello world'.title()
'Hello World'

Таким образом, в зависимости от ваших потребностей, вы можете выбрать подходящий метод для форматирования строки.

0

Если str.title() не работает для вас, можете сделать капитализацию самостоятельно.

  1. Разбейте строку на список слов.
  2. Приведите к верхнему регистру первую букву каждого слова.
  3. Объедините слова в одну строку.

Решение в одну строку:

>>> ' '.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)

Таким образом, вы получаете строку с правильно оформленными заглавными буквами.

0

Проблема с пустой строкой заключается в том, что при обращении к срезу [1:] возникнет ошибка. Поэтому я бы использовал следующий код:

def my_uppercase(title):
    if not title:
        return ''
    return title[0].upper() + title[1:]

Этот код корректно преобразует только первую букву строки в верхний регистр.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь