关于string:如何在python中验证用户输入

How to validate user input in python

本问题已经有最佳答案,请猛点这里访问。

我是python的新手,我正在试图弄清楚如何验证用户输入。 我想要求用户提交DNA序列并想要验证它是DNA序列。 可接受的输入可以有大写或小写的ATCG和空格,我不确定如何做到这一点。

到目前为止,我可以要求输入但不验证它。

1
2
import sys
Var1 = raw_input("Enter Sequence 1:")

然后我想做一些事情:

1
2
3
if Var1 != ATCG (somehow put 'characters that match ATCG or space)
    print"Please input valid DNA sequence"
    sys.exit() (to have it close the program)

有帮助吗? 我觉得这应该是相当简单但我不知道如何指定它可以是任何ATCG,atcg或空间。


您可以使用allstr.lower和生成器表达式:

1
2
3
if not all(x in"agct" for x in Var1.lower()):
    print"Please input valid DNA sequence"
    sys.exit(1)

在上面的代码中,如果Var1中的任何字符不是以下之一,则将运行最后两行:

1
"A","T","C","G","","a","t","c","g"


另外(类似于在Python中,如何检查字符串是否只包含某些字符?):

1
2
3
4
5
6
7
>>> import re
>>> def special_match(strg, search=re.compile(r'[^atcgATCG\s]').search):
...   return bool(search(strg))
>>> if (special_match("atcF")):
...   print"Invalid input"
...
>>> Invalid input