как изменить регистр первой буквы строки? - PullRequest
27 голосов
/ 19 ноября 2010
s = ['my', 'name']

Я хочу изменить 1-ю букву каждого элемента в верхний регистр.

s = ['My', 'Name']

Ответы [ 5 ]

51 голосов
/ 23 ноября 2012

Оба .capitalize () и .title (), изменяет другие буквы в строке в нижний регистр.

Вот простая функция, которая изменяет только первую букву в верхний регистр, а остальныебез изменений.

def upcase_first_letter(s):
    return s[0].upper() + s[1:]
26 голосов
/ 19 ноября 2010

Вы можете использовать метод capitalize () :

s = ['my', 'name']
s = [item.capitalize() for item in s]
print s  # print(s) in Python 3

При этом будет напечатано:

['My', 'Name']
12 голосов
/ 19 ноября 2010

Вы можете использовать 'my'.title(), который вернет 'My'.

Чтобы получить полный список, просто отобразите его так:

>>> map(lambda x: x.title(), s)
['My', 'Name']

На самом деле .title()заставляет все слова начинаться с заглавной буквыЕсли вы хотите строго ограничить первую букву, используйте capitalize().(Это имеет значение, например, при изменении «этого слова» на This Word или This word)

6 голосов
/ 19 ноября 2010

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

s = map(lambda e: e[:1].upper() + e[1:] if e else '', s)

Примечание: В Python 3 вам необходимо использовать:

s = list(map(lambda e: e[:1].upper() + e[1:] if e else '', s))

, потому что map() возвращает итератор, которыйприменяет функцию к каждому элементу итерируемого вместо list, как это было в Python 2 (так что вы должны превратить его в один).

0 голосов
/ 19 ноября 2010

Вы можете использовать

for i in range(len(s)):
   s[i]=s[i].capitalize()
print s
...