Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2016 22:16:54

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить букву в слове

Привет. Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?

Мне нужно заменить не какую-то конкретную букву на другую, а букву под конкретным индексом на другую.

Отредактировано Straik32423 (Июль 11, 2016 22:21:24)

Офлайн

#2 Июль 11, 2016 23:05:58

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Изменить букву в слове

>>> 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'

P.S. Это, конечно, изобретение велосипеда. Вообще-то в Python есть библиотечная функция replace() для замены подстроки в строке. Она тоже возвращает новую строку:
>>> word = 'hallo'
>>> print(word.replace(word[1], 'e'))
hello
>>> 

Отредактировано old_monty (Июль 11, 2016 23:16:36)

Офлайн

#3 Июль 11, 2016 23:14:03

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Изменить букву в слове

преобразуй слово в список меняй букву в списке по индексу.возращай слово из списка методом join()

Офлайн

#4 Июль 11, 2016 23:17:08

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить букву в слове

marvellik
преобразуй слово в список меняй букву в списке по индексу.возращай слово из списка методом join()
Было лень ждать ответа, пришлось немного попариться со срезами. Но спасибо за совет на будущее.

Офлайн

#5 Июль 11, 2016 23:19:44

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Изменить букву в слове

old_monty
Вообще-то в Python есть библиотечная функция replace()
но replace() заменит все вхождения одной буквы на другую а не одну конкретную букву

word = 'катапульта'
print(word.replace('а','о'))
>>> котопульто

Офлайн

#6 Июль 11, 2016 23:29:52

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Изменить букву в слове

marvellik
но replace() заменит все вхождения одной буквы на другую а не одну конкретную букву
Это только если не указать опциональный 3-й параметр - макс. количество замен. Если указать 1, то будет:
>>> word = 'катапульта'
>>> print(word.replace('а', 'о', 1))
котапульта
>>> 

Офлайн

#7 Июль 12, 2016 00:06:53

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Изменить букву в слове

Straik32423
Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
В питоне вообще нет возможности заменить букву. Строки это константные объекты.

Можно сделать новую строку
import re
a="abcd12345"
print(re.sub("^(.{2}).",r"\1_",a))
>>> 
ab_d12345



Отредактировано doza_and (Июль 12, 2016 00:07:52)

Офлайн

#8 Июль 12, 2016 00:43:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Изменить букву в слове

Straik32423
Есть ли возможность, не применяя срезы, заменить букву в слове, зная ее индекс?
>>> s = 'abcde'
>>> 
>>> lst = list(s)
>>> lst[2] = 'x'
>>> 
>>> s = ''.join(lst)
>>> s
'abxde'
>>>



Офлайн

#9 Июль 12, 2016 10:29:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Изменить букву в слове

old_monty
да нет же! а если буква находится дальше в слове? replace здесь не подходит



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Июль 12, 2016 20:43:58

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Изменить букву в слове

JOHN_16
Если заменяемая буква находится дальше в слове, эту проблему можно легко обойти, включив в замену соседние буквы:

>>> wrong_word = 'кОтОпульта'
>>> correct_word = wrong_word.replace('тОп', 'тАп')
>>> print(correct_word)
кОтАпульта
>>> 
Может это и не истинный pythonic style, зато просто и надежно.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version