当前位置:嗨网首页>书籍在线阅读

06-关键字参数allowRegexes和blockRegexes

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.1.4 关键字参数allowRegexes和blockRegexes

你也可以使用正则表达式指定输入是否被接受。关键字参数 allowRegexesblockRegexes 利用正则表达式字符串列表来确定 PyInputPlus 模块的函数将接受或拒绝哪些内容作为有效输入。例如,在交互式环境中输入以下代码,使得 inputNum() 函数将接收罗马数字以及常规数字作为有效输入:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum(allowRegexes=[r'(I|V|X|L|C|D|M)+', r'zero']) 
XLII
>>> response
'XLII'
>>> response = pyip.inputNum(allowRegexes=[r'(i|v|x|l|c|d|m)+', r'zero']) 
xlii
>>> response
'xlii'

当然,这个正则表达式仅影响 inputNum() 函数从用户那里接收的字母;该函数仍会接收具有无效顺序的罗马数字,例如 'XVX''MILLI' ,因为 r'(I|V|X|L|C|D|M)+' 正则表达式接收这些字符串。

你还可以用 blockRegexes 关键字参数指定 PyInputPlus 模块的函数不接收的正则表达式字符串列表。在交互式环境中输入以下内容,使得 inputNum() 不接收偶数作为有效输入:

>>> import pyinputplus as pyip
>>> response = pyip.inputNum(blockRegexes=[r'[02468]$']) 
42
This response is invalid.
44
This response is invalid.
43
>>> response
43

如果同时指定 allowRegexesblockRegexes 参数,那么允许列表将优先于阻止列表。例如,在交互式环境中输入以下内容,它允许使用 'caterpillar''category' ,但会阻止包含 'cat' 的任何其他内容:

>>> import pyinputplus as pyip
>>> response = pyip.inputStr(allowRegexes=[r'caterpillar', 'category'],
blockRegexes=[r'cat'])
cat
This response is invalid.
catastrophe
This response is invalid.
category
>>> response
'category'

PyInputPlus 模块的函数可以避免你自己编写繁琐的输入验证代码,而且 PyInputPlus 模块的功能比这里详细介绍的更多。