简体   繁体   中英

How to create a for-loop that removes unwanted characters and replaces them in Python

I have an assignment which is to build a palindrome detector, and there is just one thing left in the code that I can't get my head around. I've been trying to fix it for days and now I need some assistance before I lose my mind...

The only thing left is for the program to remove unwanted characters from the users input, and replace it with nothing (""). So for example, the program is supposed to be able to interpret both "Anna" and "A!N!N!A" as palindromes. I'm required to use a for-loop to remove the characters.

> #the characters that need to be removed 
not_valid = "?!\"\'#€%&/-()=? :,"

#user input 
user_entry = tkinter.Entry(mid_frame, width = 67)

#variable with the user input, and transforms into lower case characters
text = user_entry.get()

text = text.lower()

So what I need is a for-loop that can help me to get the not_valid characters out of text . All the code I've been trying with so far Is useless. I would be really grateful for all the help I can get!

you can use regex module and sub function

import re
s = re.sub(r'[?!\"\'#€%&\-()=\s:,]', '', s)
s = re.sub(r'\W', '', s)  # this will remove all non-alphanumerical chars

with for loop

for c in bad_chars:
    s = s.replace(c, '')

For a more "simple" answer (although I personally think the first answer is simple enough) you can loop through each letter, then use the in keyword to check if that letter is one of the not_valid letters.

Here is an example:

text = user_entry.get()
text = text.lower()

not_valid = "?!\"\'#€%&/-()=? :,"
valid = ""    #Create a new_variables were only the valid characters are stored

for char in text:  #For every character in the text...

    if char in not_valid:  #If the character is in your not_valid list do not add it
        continue    
    else:                  #Other wise add it
        valid += char

print(valid)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM