Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从用户输入中删除特定字符?_Python_User Input - Fatal编程技术网

Python 如何从用户输入中删除特定字符?

Python 如何从用户输入中删除特定字符?,python,user-input,Python,User Input,我有一个代码,它需要用户输入的功能,但测试后,我想让它白痴证明。要做到这一点,我需要让它清除除数字以外的任何情况下的无效字符。使用any()|这是一个内置函数一个好方法可能是使用string.translate CHARS_TO_REMOVE=“?!;:,” trans=”“.maketrans({i:“”表示要删除的字符中的i}) 输入\字符串=输入() 净化字符串=输入字符串。翻译(trans) 我不知道你到底想干什么 以下是一些选项: 检查特定值 选项1:您可以使用列表检查特定值 test

我有一个代码,它需要用户输入的功能,但测试后,我想让它白痴证明。要做到这一点,我需要让它清除除数字以外的任何情况下的无效字符。

使用any()|这是一个内置函数

一个好方法可能是使用
string.translate

CHARS_TO_REMOVE=“?!;:,”
trans=”“.maketrans({i:“”表示要删除的字符中的i})
输入\字符串=输入()
净化字符串=输入字符串。翻译(trans)

我不知道你到底想干什么

以下是一些选项:

检查特定值 选项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
使用regex进行检查,并使用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

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

Python正则表达式非常适合这种工作。要在python中使用正则表达式,需要导入re模块

import re

x= "aiosdhasiujhd 123 12390123 123 -873 sd/. "

print(re.findall(r'-?\d+',x))
输出:

['123','12390123','123','873']


前面提到的正则表达式查找一个字符串,该字符串的开头为-,重复0或1次(?运算符),后跟任意次数(\d+)

问题不完整。请提供您尝试输入的代码。提问时要遵守社区指导原则。我想再解释一下。你的思路是正确的,但OP可能需要更清楚地了解你的意思。他没有为看似简单的程序提供任何基本代码,因此我觉得他不想学习任何东西,而是想复制/粘贴我们的社区不是这样工作的。我们提供高质量的答案,并鼓励老年人改善他们的问题。请回顾您如何回答问题。