我按如下方式设置参数解析器:
parser=argparse.ArgumentParser()
parser.add_argument('--point',help='enter a point (e.g. 2,3,4)')
parser.parse_args('--point=-2,5,6'.split()) #works
parser.parse_args('--point -2,5,6'.split()) #doesn't work :(
有什么方法可以告诉 argparse 与正则表达式匹配的字符串r"-\d+.*"
不是选项而是选项的参数?
另请注意,我could做这样的事情:
parser.add_argument('--point',nargs='*')
parser.parse_args('--point -2 5 6'.split())
但这并不是我真正想要的工作方式。
我认为预处理 sys.argv 是最直接的方法。例如考虑:
import argparse, re
parser=argparse.ArgumentParser()
parser.add_argument('--point',help='enter a point (e.g. 2,3,4)')
args = '--point -2,5,6'.split() # or sys.argv
is_list = re.compile(r'^-?[\d,.]+$')
args = ['"%s"' % x if is_list.match(x) else x for x in args]
print parser.parse_args(args)
这返回Namespace(point='"-2,5,6"')
这应该很容易解析。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)