Как заменить все символы, кроме одного в предложении - PullRequest
1 голос
/ 30 сентября 2019
sentence = “This makes array operations faster but less safe”

letter = ‘a’

Функция должна печатать

******a****a**a******a*******a***************a**

Я пытался использовать замену и другие методы, но я все еще не могу найти способ заставить ее работать

spam="This makes array operations faster but less safe"

print(spam.replace("b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "*"))

Я ожидал

******a****a**a******a*******a***************a**

Ответы [ 5 ]

4 голосов
/ 30 сентября 2019

Используйте Regex.

Пример:

import re
sentence = 'This makes array operations faster but less safe'
print(re.sub(r"[^a]", r"*", sentence))

Выход:

******a****a**a******a*******a***************a**
2 голосов
/ 30 сентября 2019

Вы можете использовать понимание списка с условной заменой, а затем присоединиться.

sentence = 'This makes array operations faster but less safe'
letter = 'a'

result = ''.join([s if s == letter else '*' for s in sentence])
print(result)
# ******a****a**a******a*******a***************a**
1 голос
/ 30 сентября 2019

Это простая работа для re.sub, она заменяет любой символ, который не a до *:

import re
spam = "This makes array operations faster but less safe"
print(re.sub('[^a]', '*', spam))

OUPUT:

******a****a**a******a*******a***************a**
0 голосов
/ 30 сентября 2019

Множество отличных ответов. Если вам нужно еще несколько символов, вы также можете использовать словари:

sentence = 'This makes array operations faster but less safe'

filters = {'a': 'a', 'b': 'b'}

result = ''.join(filters.get(x, '*') for x in sentence)

# '******a****a**a******a*******a*****b*********a**'
0 голосов
/ 30 сентября 2019

Если вы не хотите использовать регулярные выражения (я знаю, что это проще), если вы хотите пойти традиционным путем, используйте это:

sentence = “This makes array operations faster but less safe”
result = ''
for letter in sentence:
    if letter != 'a': result += '*'
    else: result += 'a'
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...