anon10023108
anon10023108

Reputation: 141

How to censor multiple words in a sentence with hyphen

I have a function that replaces a single word in a sentence with a hyphen and It works fine what I was trying to add was for the user to enter multiple words separated by space and the function censors them. Is there any way to do this? My current code is attached below. Any help is appreciated. Thanks in advance.

def replaceWords(text, word):
    word_list = text.split()
  
    result = ''
  
    hyphen = '-' * len(word)
  

    count = 0


    index = 0;
    for i in word_list:
  
        if i == word:
              
            
            word_list[index] = hyphen
        index += 1
  
    
    result =' '.join(word_list)
  
    return result

def main():
    sentence = input(str("enter a sentence: "))
    words = input(str("enter words to censor(separated by space): "))
    print(replaceWords(sentence, words))
  

if __name__== '__main__':
    main()

Upvotes: 0

Views: 89

Answers (2)

Samwise
Samwise

Reputation: 71517

You already mostly have the right idea; just change word from being a single string to a list of strings, and use in to see if each word is part of that list.

>>> from typing import List
>>>
>>> def censor_words(text: str, bad_words: List[str]) -> str:
...     return ' '.join(
...         '-' * len(word) if word in bad_words else word
...         for word in text.split()
...     )
...
>>>
>>> print(censor_words("frankly my dear I don't give a damn", ['dear', 'give']))
frankly my ---- I don't ---- a damn

Upvotes: 3

farbiondriven
farbiondriven

Reputation: 2468

You can use string replace:

def replaceWords(text, words):
    censored_words = words.split()
    replace_character = "-"
    for censor in censored_words:
        text = text.replace(censor,replace_character*len(censor))
    
    return text

def main():
    sentence = input(str("enter a sentence: "))
    words = input(str("enter words to censor(separated by space): "))
    print(replaceWords(sentence, words))
  

if __name__== '__main__':
    main()

Upvotes: 3

Related Questions