[SOLVED] How to replace every third word in a string with the # length equivalent

Issue

Input:

string = "My dear adventurer, do you understand the nature of the given discussion?"

expected output:

string = 'My dear ##########, do you ########## the nature ## the given ##########?'

How can you replace the third word in a string of words with the # length equivalent of that word while avoiding counting special characters found in the string such as apostrophes(‘), quotations("), full stops(.), commas(,), exclamations(!), question marks(?), colons(:) and semicolons (;).

I took the approach of converting the string to a list of elements but am finding difficulty filtering out the special characters and replacing the words with the # equivalent. Is there a better way to go about it?

Solution

I solved it with:

s  = "My dear adventurer, do you understand the nature of the given discussion?"

def replace_alphabet_with_char(word: str, replacement: str) -> str:
    new_word = []
    alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    for c in word:
        if c in alphabet:
            new_word.append(replacement)
        else:
            new_word.append(c)
    return "".join(new_word)

every_nth_word = 3
s_split = s.split(' ')
result = " ".join([replace_alphabet_with_char(s_split[i], '#') if i % every_nth_word == every_nth_word - 1 else s_split[i] for i in range(len(s_split))])
print(result)

Output:
My dear ##########, do you ########## the nature ## the given ##########?

Answered By – Christian Weiss

Answer Checked By – David Marino (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *