Python Понимание списка - замена нескольких букв в строке - PullRequest
0 голосов
/ 29 марта 2020

Я только начал изучать Python и пытался написать код, чтобы заменить все вхождения буквы в данной строке. Я использую понимание, и приведенный ниже код, кажется, работает, но исходя из моего понимания, это не должно было работать. Он должен был просто заменить одну из букв, а не все. Пожалуйста, смотрите код ниже. Я думал, что он заменит только первую букву "C", но он заменил обе "C". Как?

Спасибо!

'''
word_before = 'ABCABCDDEEF'
letter_id = 2
letter_to_replace = word[letter_id]
word_after = [word_before.replace(x, '_') for i, x in enumerate(word_before) if i==letter_id]
word_after = str(word_after)
print(word_after)
'''

1 Ответ

0 голосов
/ 29 марта 2020

Что делает ваш код: «если я == 2, передайте whole_word.replace ('C', '_'), иначе ничего не делает»

Что вы хотите, чтобы он делал: если я == 2, дать "_", иначе дать оригинальный символ (заменяет только первую букву)

word_before = 'ABCABCDDEEF'
letter_id = 2
letter_to_replace = word[letter_id] # This is not used, since you're checking via index not letter
word_after = ['_' if i == letter_id else x for i, x in enumerate(word_before)] # Correct expression
word_after = ''.join(word_after) # Combines ['A', 'B'] -> 'AB' (list -> string)
print(word_after) # AB_ABCDDEEF
...