Привет. Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
Мне нужно заменить не какую-то конкретную букву на другую, а букву под конкретным индексом на другую.
>>> word = 'hallo' # слово с опечаткой >>> new_word = '' # заводим новое пустое слово, т.к. строки в Python неизменяемые >>> for ch in word: ... if ch == word[1]: ... new_word += 'e' # исправляем опечатку ... else: ... new_word += ch ... >>> new_word # новое слово 'hello' >>> word # старое слово 'hallo'
>>> word = 'hallo' >>> print(word.replace(word[1], 'e')) hello >>>
marvellikБыло лень ждать ответа, пришлось немного попариться со срезами. Но спасибо за совет на будущее.
преобразуй слово в список меняй букву в списке по индексу.возращай слово из списка методом join()
old_montyно replace() заменит все вхождения одной буквы на другую а не одну конкретную букву
Вообще-то в Python есть библиотечная функция replace()
word = 'катапульта' print(word.replace('а','о'))
>>> котопульто
marvellikЭто только если не указать опциональный 3-й параметр - макс. количество замен. Если указать 1, то будет:
но replace() заменит все вхождения одной буквы на другую а не одну конкретную букву
>>> word = 'катапульта' >>> print(word.replace('а', 'о', 1)) котапульта >>>
Straik32423В питоне вообще нет возможности заменить букву. Строки это константные объекты.
Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
import re a="abcd12345" print(re.sub("^(.{2}).",r"\1_",a)) >>> ab_d12345
Straik32423
Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
>>> s = 'abcde' >>> >>> lst = list(s) >>> lst[2] = 'x' >>> >>> s = ''.join(lst) >>> s 'abxde' >>>
>>> wrong_word = 'кОтОпульта' >>> correct_word = wrong_word.replace('тОп', 'тАп') >>> print(correct_word) кОтАпульта >>>