python - Как перенести первый символ строки?
string (6)
Интересно, что ни один из этих ответов не имеет абсолютно противоположности capitalize()
. Например, AbC
capitalize('abC')
возвращает Abc
а не AbC
. Если вам нужна противоположность функции capitalize()
, вам нужно что-то вроде:
def uncapitalize(s):
if len(s) > 0:
s = s[0].lower() + s[1:].upper()
return s
Существует функция для заглавной строки, я хотел бы иметь возможность изменить первый символ строки, чтобы быть уверенным, что она будет строчной.
Как я могу это сделать в Python?
Нет необходимости обрабатывать особые случаи (и я думаю, что симметрия более Pythonic):
def uncapitalize(s):
return s[:1].lower() + s[1:].upper()
Самый простой способ:
>>> 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("")
>>>
Это дублирующее post привело меня сюда.
Если у вас есть список строк, как показано ниже
l = ['SentMessage', 'DeliverySucceeded', 'DeliveryFailed']
Затем, чтобы преобразовать первую букву всех элементов в списке, вы можете использовать
l = [x[0].lower() + x[1:] for x in l]
Вывод
['sentMessage', 'deliverySucceeded', 'deliveryFailed']
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 :-)
s = "Bobby tables"
s = s[0].lower() + s[1:]