我有一个工作的正则表达式(和argparse)来解析由[和]分隔的命令行参数,如下所示:[-p 3 -d 5 -c purrfect] [-p 4 -d 8 -c 8] [-p 5 -d 4 -c 10]这些参数应按以下方式在文本文件中打印(请参见下面的方法):
Parrots: 3
Dogs: 5
Cats: purrfect
Parrots: 4
Dogs: 8
Cats: 8
Parrots: 5
Dogs: 4
Cats: 10
这些参数输入可以在不同的组中更改,并且可以是int,str或float类型。
我已经检查了以下问题,但它们并没有真正回答问题:
Argparse, handle repeatable set of items和Python argparser repeat subparse
我还尝试了几种方法,包括计算正则表达式匹配项的数量以及以某种方式使匹配项索引与它们一起工作,但没有帮助。
我的带有argparse的解析函数如下所示:
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--cat", nargs="*")
parser.add_argument("-d", "--dog", nargs="*")
parser.add_argument("-p", "--parrot", nargs="*")
args = parser.parse_args()
parse_arguments(args)
def parse_arguments(args):
all_arguments = ' '.join(sys.argv[1:])
match = re.findall("\[.*?\]", all_arguments)
content = Content()
# with open('file.txt', 'w') as f:
for index, i in enumerate(match):
print(index, i)
# f.write(first_group, second_group) etc...
我想要的是能够使用如下方法打印给定参数:
class Content(object):
def __init__(self, args):
self.cat = args.cat
self.dog = args.dog
self.parrot = args.parrot
def first_group(self):
return "Cats: " + str(self.cat) + "\n" + "Dogs: " + str(self.dog) + "\n" + "Parrots: " + str(self.parrot) + "\ņ"
def second_group(self):
return "Cats: " + str(self.cat) + "\n" + "Dogs: " + str(self.dog) + "\n" + "Parrots: " + str(self.parrot) + "\ņ"
def third_group(self):
return "Cats: " + str(self.cat) + "\n" + "Dogs: " + str(self.dog) + "\n" + "Parrots: " + str(self.parrot) + "\ņ"
此first_group将与第一个正则表达式匹配,因此参数“ --cat”打印在“ Cats:” + str(self.cat)等中。second_group将具有第二个正则表达式匹配的参数,依此类推。现在,我只能打印来自正则表达式解析的匹配结果。
这有可能吗?