是否可以使用正则表达式来解析参数?例如,我想接受一个参数,如果它只是一个32长度十六进制(即匹配/[a-f0-9A-F]{32}/
)
我试过了
p.add_argument('hex', type=str, nargs="[a-f0-9A-F]{32}")
没有成功
这就是type
kwarg用于:它可以采用任何可调用的单个字符串参数并返回转换后的值.
import argparse import re from uuid import uuid4 def my_regex_type(arg_value, pat=re.compile(r"^[a-f0-9A-F]{32}$")): if not pat.match(arg_value): raise argparse.ArgumentTypeError return arg_value parser = argparse.ArgumentParser() parser.add_argument('hex', type=my_regex_type) args = parser.parse_args([uuid4().hex])