argparse正则表达式

argparse正则表达式

本文介绍了Python argparse正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用正则表达式来解析参数?例如,我只想接受一个长度为32的十六进制参数(即匹配/[a-f0-9A-F]{32}/)

Is it possible to use a regex expression for parsing an argument? For example, I want to accept an argument if only it is a 32 length hex (i.e. matches /[a-f0-9A-F]{32}/)

我尝试过

p.add_argument('hex', type=str, nargs="[a-f0-9A-F]{32}")

没有成功

推荐答案

这是 type kwarg用于:它可以接受带有单个字符串参数并返回转换后值的任何可调用对象.

This is what the type kwarg is used for: it can take any callable that takes a single string argument and returns the converted value.

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])

这篇关于Python argparse正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 12:49