Вопрос:

заменить некоторые строчные буквы на прописные в строке

python string python-3.x uppercase

49852 просмотра

2 ответа

803 Репутация автора

index = [0, 2, 5]
s = "I am like stackoverflow-python"
for i in index:
        s = s[i].upper()
print(s)

IndexError: string index out of range

Я понимаю, что в первой итерации строка, sстановящаяся просто первым символом, в данном случае - заглавной буквой «I». Но я попытался сделать это без "s =", используя swapchcase()вместо этого, но это не работает.

В основном я пытаюсь напечатать sстроку с заглавными буквами, используя Python 3.X

Автор: Hanan N. Источник Размещён: 21.11.2011 07:49

Ответы (2)


19 плюса

392631 Репутация автора

Решение

Строки являются неизменяемыми в Python, поэтому вам нужно создать новый строковый объект. Один из способов сделать это:

indices = set([0, 7, 12, 25])
s = "i like stackoverflow and python"
print("".join(c.upper() if i in indices else c for i, c in enumerate(s)))

печать

I like StackOverflow and Python
Автор: Sven Marnach Размещён: 21.11.2011 07:53

5 плюса

8420 Репутация автора

Вот мое решение. Он не перебирает каждый символ, но я не уверен, что преобразование строки в список и обратно в строку более эффективно.

>>> indexes = set((0, 7, 12, 25))
>>> chars = list('i like stackoverflow and python')
>>> for i in indexes:
...     chars[i] = chars[i].upper()
... 
>>> string = ''.join(chars)
>>> string
'I like StackOverflow and Python'
Автор: Tyler Crompton Размещён: 21.11.2011 09:05
Вопросы из категории :
32x32