首页 > 解决方案 > 如何从用户输入中删除特定字符?

问题描述

我有一个需要用户输入才能运行的代码,但是在对其进行测试之后,我想让它成为白痴证明。为此,我需要让它清除除数字以外的任何情况下的无效字符。

标签: pythonuser-input

解决方案


我不知道你到底想做什么。

这里有几个选项:

检查特定值

选项 1:您可以使用列表检查特定值

test_input = input('Do you want to continue [y/n] : ')
valid = ['y','yes','n','no']
if test_input.lower() not in valid:
    print ('not a valid input')
else:
    print ('valid input')

选项 2:您还可以遍历列表并检查它们

if any(test_input.lower() == i for i in valid):
    print ('valid input')
else:
    print ('not a valid input')

上述两个选项的输出是:

Do you want to continue [y/n] : good
not a valid input

Do you want to continue [y/n] : Good
not a valid input

Do you want to continue [y/n] : yes
valid input

Do you want to continue [y/n] : No
valid input

使用正则表达式检查并使用 re.sub 替换

如果您只需要数字和字母(字母数字)值,则可以检查它们并替换其他所有内容。仅对于数字和字母,请使用'[^0-9a-zA-Z]+',如果您还想添加空格,请使用'[^0-9a-zA-Z ]+'。之后Z,我添加了一个空格。您可以在[].

import re
user_input = input('Enter only alphabets and numbers : ')
cleansed_input = re.sub('[^0-9a-zA-Z]+', '', user_input)
print (cleansed_input)


Enter only alphabets and numbers : 42 days into Stardom!!! is Gr#aT
42daysintoStardomisGraT

Enter only alphabets and numbers : 42 days #Star!!!()32*%53
42 days Star3253

第一个不包括空间,第二个包括空间。


推荐阅读