如何创建一个for循环来删除不需要的字符并在Python中替换它们

时间:2018-01-06 11:56:08

标签: python python-3.x loops for-loop replace

我的任务是建立一个回文检测器,代码中只剩下一件我无法理解的事情。我已经试图解决它好几天了,现在我在失去理智之前需要一些帮助......

唯一剩下的就是程序从用户输入中删除不需要的字符,并将其替换为空("")。因此,例如,该程序应该能够解释" Anna"和#34; A!N!N!A"作为回文。我必需使用 for-loop 删除字符。

> #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()

所以我需要的是一个for循环,它可以帮助我从not_valid中获取text个字符。到目前为止,我一直在尝试的所有代码都没用。我真的很感激能得到的所有帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式模块和sub函数

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

with for循环

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

答案 1 :(得分:0)

更多"简单"回答(虽然我个人认为第一个答案很简单)你可以循环遍历每个字母,然后使用in关键字检查该字母是否是not_valid个字母之一。

以下是一个例子:

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)