Форум сайта python.su
Привет. Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
Мне нужно заменить не какую-то конкретную букву на другую, а букву под конкретным индексом на другую.
Отредактировано Straik32423 (Июль 11, 2016 22:21:24)
Офлайн
>>> 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 >>>
Отредактировано old_monty (Июль 11, 2016 23:16:36)
Офлайн
преобразуй слово в список меняй букву в списке по индексу.возращай слово из списка методом join()
Офлайн
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
Отредактировано doza_and (Июль 12, 2016 00:07:52)
Офлайн
Straik32423
Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
>>> s = 'abcde' >>> >>> lst = list(s) >>> lst[2] = 'x' >>> >>> s = ''.join(lst) >>> s 'abxde' >>>
Офлайн
old_monty
да нет же! а если буква находится дальше в слове? replace здесь не подходит
Офлайн
JOHN_16
Если заменяемая буква находится дальше в слове, эту проблему можно легко обойти, включив в замену соседние буквы:
>>> wrong_word = 'кОтОпульта' >>> correct_word = wrong_word.replace('тОп', 'тАп') >>> print(correct_word) кОтАпульта >>>
Офлайн