Я знаю, что .capitalize () использует заглавные буквы в первой строке, но что, если первый символ является целым числом?
этот
1bob
5sandy
к этому
1Bob
5Sandy
python
capitalize
letter
user1442957
источник
источник
next((i for i,e in enumerate(test) if not e.isdigit()), '0')
решает его для случая пустой строки. capitalize
также преобразует другие символы в нижние. Из официальных документов: «Вернуть titlecased версии S, т.е. слова начинаются с заголовком буквами, все остальные обсаженных символы имеют нижний регистр. »Только потому, что никто не упомянул об этом
Однако это также даст
то есть он не просто использует первый буквенный символ. Но тогда
.capitalize()
есть та же проблема, по крайней мере, в этом'joe Bob'.capitalize() == 'Joe bob'
, так что.источник
Это похоже на ответ @ Anon в том, что он сохраняет остальную часть строки без изменений, без необходимости в модуле re.
Как указал @Xan, функция могла бы использовать больше проверки ошибок (например, проверка того, что x является последовательностью - однако я опускаю крайние случаи, чтобы проиллюстрировать эту технику)
Обновлено за комментарий @normanius (спасибо!)
Благодаря @GeoStoneMarten за указание я не ответил на вопрос! исправлено
источник
len(x) == 0
ветка.return x[0].upper() + x[1:] if len(x) > 0 else x
capitalize
&title
сначала строчная вся строка, а затем заглавная только первая буква.a[:1].upper() + a[1:]
, это позаботится оlen(X)==0
углу дела.Вот строка, состоящая из одной строки, которая будет заглавной буквой первой буквы и оставит регистр всех последующих букв:
Это приведет к
WordsWithOtherUppercaseLetters
источник
Как видим здесь ответил Чен Houwu, что можно использовать строки пакета:
источник
Я придумал это:
источник
Вы можете заменить первую букву (
preceded by a digit
) каждого слова с помощью регулярных выражений:источник
однострочник:
' '.join(sub[:1].upper() + sub[1:] for sub in text.split(' '))
источник