Python argparse传递带分隔符的列表



与以下内容:

parser.add_argument("-l", "--library", type=str, nargs="*", dest="scanLibrary")

在某些情况下,传递的名称列表可能包含空格。Argparse用空格分隔列表,所以

mything.py -l test of foo, game of bar, How I foo bar your mother

网我:

scanLibrary=['test', 'of', 'foo,', 'game', 'of', 'bar,', 'How', 'I', 'foo', 'bar', 'your', 'mother']

那么我如何让argparse使用我选择的分隔符呢?

更新:根据Martijn Pieters的建议,我做了以下更改:

parser.add_argument("-l", "--library", type=str, nargs="*", dest="scanLibrary")
print args.scanLibrary
print args.scanLibrary[0].split(',')

结果为:

mything.py -l "test of foo, game of bar, How I foo bar your mother"
['test of foo, game of bar, How I foo bar your mother']
['test of foo', ' game of bar', ' How I foo bar your mother']

我可以很容易地清理前导空间。由于

你不能。是shell在这里进行解析;它将参数作为解析列表传递给进程。

为了防止这种情况,引用你的论点:

mything.py -l "test of foo, game of bar, How I foo bar your mother"

在我看来,实现这一点的更好方法是使用lambda函数。这样,您就不必对列表进行后处理,从而使代码保持干净。你可以这样做:

# mything.py -l test of foo, game of bar, How I foo bar your mother
parser.add_argument("-l",
                    "--library",
                    type=lambda s: [i for i in s.split(',')],
                    dest="scanLibrary")
print(args.scanLibrary)
# ['test of foo', 'game of bar', 'How I foo bar your mother']

我不能评论你的问题,因为有50个代表。我只是想说你可以使用:

'   some string '.strip()

:

'some string'

相关内容

  • 没有找到相关文章

最新更新