s = ['my', 'name']
Я хочу изменить 1-ю букву каждого элемента в верхний регистр.Как изменить регистр первой буквы строки?
s = ['My', 'Name']
s = ['my', 'name']
Я хочу изменить 1-ю букву каждого элемента в верхний регистр.Как изменить регистр первой буквы строки?
s = ['My', 'Name']
Вы можете использовать capitalize() метод:
s = ['my', 'name']
s = [item.capitalize() for item in s]
print s # print(s) in Python 3
Это будет печатать:
['My', 'Name']
Вы можете использовать 'my'.title()
который будет возвращать 'My'
.
Чтобы получить более полный список, просто карта над ним, как это:
>>> map(lambda x: x.title(), s)
['My', 'Name']
На самом деле, .title()
делает все слова начинаются с символа верхнего регистра. Если вы хотите строго ограничить его первой буквой, используйте вместо этого capitalize()
. (Это делает разницу, например, в «это слово» изменяется либо This Word
или This word
)
, а также разница между Frank и Frank'S - как указано здесь http://op.to/How.To.Capitalize.First.Letter+ –
Кроме того, 'str.title' - это более простой способ указать' lambda x: x.title() '. – trss
Вы можете использовать
for i in range(len(s)):
s[i]=s[i].capitalize()
print s
Вам не нужно «temp», он ничего не делает, и это то же самое, что «list [i] = list [i] .capitalize()» - это будет работать, только если список OP с именем 's 'было переименовано в' list', но это было бы плохой практикой, потому что это скроет встроенную функцию/тип с тем же именем. Не уверен, почему конечная запятая в заявлении на печать была помещена туда ... – martineau
было опечатать ошибку, чтобы поместить туда запятую. – Kracekumar
Это, вероятно, не имеет значения, но вы можете использовать это вместо того, capitalize()
или title()
строковых методы, потому что, в дополнении к верхнему регистру первой буквы, они также в нижнем регистре остальных строк (и это не делает):
s = map(lambda e: e[:1].upper() + e[1:] if e else '', s)
+1: хороший улов; однако почему выражение 'if s else ''? Чтобы избежать конкатенации пустых строк? Я считаю, что это преждевременная оптимизация. – tzot
@ ΤΖΩΤΖΙΟΥ: Спасибо. Эта часть существует главным образом потому, что я просто подстроил свой ответ на аналогичный [вопрос] (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- питон/3847369 # 3847369). Я предпочитаю думать об этом как о защитном программировании, так как он может обрабатывать элемент списка «Нет» (поэтому нет, его нет, потому что беспокоило о том, что пустой случай строки меньше оптимального). – martineau
Я думаю, что обработка «Нет» - это плохая практика. Я предпочел бы, чтобы в этом случае возникло исключение, за исключением того, что (возможно, неправильная) пустая строка молча прошла. – dbkaplun
Оба .capitalize() и .title(), изменяет r букв в строке в нижнем регистре.
Вот простая функция, которая меняет первую букву на верхний регистр и оставляет ее неизменной.
def upcase_first_letter(s):
return s[0].upper() + s[1:]
+1 спасибо за предложение встроенных функций! –
Это не меняет 1-ю букву _each element_ в списке, указанном в вопросе OP. – martineau
Хотя LC, '[i [0] .upper() + i [1:] для i в s]' –
капитализация не делает то, что ОП спрашивает. capize также будет делать нижние регистры не первые буквы – lurscher
да, этот ответ вводит в заблуждение: '' naMe'.capitalize() == 'Name'' – Milimetric