Существует функция для заглавной строки, я хотел бы иметь возможность изменить первый символ строки, чтобы быть уверенным, что она будет строчной.
Как я могу сделать это в Python?
Существует функция для заглавной строки, я хотел бы иметь возможность изменить первый символ строки, чтобы быть уверенным, что она будет строчной.
Как я могу сделать это в Python?
Однострочный, который обрабатывает пустые строки и None
:
func = lambda s: s[:1].lower() + s[1:] if s else ''
>>> func(None)
>>> ''
>>> func('')
>>> ''
>>> func('MARTINEAU')
>>> 'mARTINEAU'
s = "Bobby tables"
s = s[0].lower() + s[1:]
def first_lower(s):
if len(s) == 0:
return s
else:
return s[0].lower() + s[1:]
print first_lower("HELLO") # Prints "hELLO"
print first_lower("") # Doesn't crash :-)
Интересно, что ни один из этих ответов не соответствует противоположному capitalize()
. Например, capitalize('abC')
возвращает Abc
, а не Abc
. Если вам нужна противоположность capitalize()
, вам нужно что-то вроде:
def uncapitalize(s):
if len(s) > 0:
s = s[0].lower() + s[1:].upper()
return s
Простейший способ:
>>> mystring = 'ABCDE'
>>> mystring[0].lower() + mystring[1:]
'aBCDE'
>>>
Обновить
См. этот ответ (by @RichieHindle) для более надежного решения, включая обработку пустых строк. Этот ответ не обрабатывает None
, хотя, вот мой прием:
>>> def first_lower(s):
if not s: # Added to handle case where s == None
return
else:
return s[0].lower() + s[1:]
>>> first_lower(None)
>>> first_lower("HELLO")
'hELLO'
>>> first_lower("")
>>>
Нет необходимости обрабатывать особые случаи (и я думаю, что симметрия более Pythonic):
def uncapitalize(s):
return s[:1].lower() + s[1:].upper()
Я бы написал так:
def first_lower(s):
if s == "":
return s
return s[0].lower() + s[1:]
У этого есть (относительная) заслуга, что он выдаст ошибку, если вы непреднамеренно передадите ей что-то, что не является строкой, например None
или пустой список.
Этот дубликат post приведет меня сюда.
Если у вас есть список строк, как показано ниже
l = ['SentMessage', 'DeliverySucceeded', 'DeliveryFailed']
Затем, чтобы преобразовать первую букву всех элементов в списке, вы можете использовать
l = [x[0].lower() + x[1:] for x in l]
Выход
['sentMessage', 'deliverySucceeded', 'deliveryFailed']