Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2019 23:40:34

philips2009
Зарегистрирован: 2017-05-09
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить (замена определенных символов в строке)

Доброго времени суток!
Есть строка, в которой необходимо заменить (скрыть) определенные символы на “*”. Мне нужно, к примеру заменить 6-ой и 11-ый символы, но почему-то заменяется и ненужные символы.
Вот код:

 def hide_symbol(string):
    # 8, 11-15
    string_list = []
    for elem in string:
        if elem == string[6] or elem == string[11]:
            hidden_elem = '*'
            string_list.append(hidden_elem)
        else:
            string_list.append(elem)
    hidden_string = ''.join(string_list)
    return hidden_string
abc = 'DS3G54R3G5HDF3G1D31'
hidden_string = hide_symbol(abc)
print(hidden_string)

Просветите пожалуйста. Заранее благодарю.

Отредактировано philips2009 (Сен. 20, 2019 23:45:47)

Офлайн

#2 Сен. 21, 2019 08:05:55

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

Помогите решить (замена определенных символов в строке)

меняйте по индексам а не совпадающим символам

 def hide_symbol(string):
    # 8, 11-15
    string_list = list(string)
    for i,_ in enumerate(string_list):
        if i+1 in (8, 11,15):
            string_list[i] = '*'
    return ''.join(string_list)
abc = 'DS3G54R3G5HDF3G1D31'
hidden_string = hide_symbol(abc)
print(hidden_string)

Офлайн

#3 Сен. 21, 2019 08:21:43

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите решить (замена определенных символов в строке)

Строка кода:

 if elem == string[6] or elem == string[11]:
ищет все элементы равные string[6] (одна R) или равные string[11] (это уже три D) и заменяет их.

Правильно будет так:
 def hide_symbol(string):
    s = list(string)
    s[6] = '*'
    s[11] = '*'
    return ''.join(s)

Офлайн

#4 Сен. 21, 2019 10:22:14

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Помогите решить (замена определенных символов в строке)

 def hide_symbol(strg, trgr, smbl):
    for i in trgr:
        out = ''
        count = 0
        for j in strg:
            if count == i - 1:
                out += smbl
                count = 0
            else:
                out += j
                count += 1
        strg = out
    return out
abc = 'DS3G54R3G5HDF3G1D31'
trgr = (6, 11)
smbl = '*'
print(hide_symbol(abc, trgr, smbl))
 DS3G5*R3G5**F3G1D*1



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 21, 2019 10:25:10)

Офлайн

#5 Сен. 21, 2019 10:34:19

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Помогите решить (замена определенных символов в строке)

rami
Правильно будет так:

 def hide_symbol(string):
    s = list(string)
    s[6] = '*'
    s[11] = '*'
    return ''.join(s)
тоже верно почему то показалось что каждый 6й и 11й символ



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 21, 2019 10:41:30)

Офлайн

#6 Сен. 21, 2019 19:08:38

philips2009
Зарегистрирован: 2017-05-09
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите решить (замена определенных символов в строке)

Огромное спасибо всем, после объяснения вами понял в чем моя ошибка. Всех благ!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version