将参数解析为单行或在 Python 中使用指定的分隔符

Parsing arguments as single line or using a specified delimiter in Python

我想在尝试以下列方式调用程序时解析命令行参数:

python plot.py --w --Develop origin plot --+3.5

我一直在使用 sys.argv 通过 for 循环解析它们:

for arg in sys,argv:
    print(arg)

输出:

plot.py
--w
--Developoriginplot
--+3.5

但我希望得到如下输出:

plot.py
w
Develop origin plot
+3.5

有没有办法通过指定分隔符来分割线 --

您需要使用 argparser

这里是一个使用示例代码:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                const=sum, default=max,
                help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

您可以使用 split() 和 replace() 函数。 split() 将定界符作为参数,replace 接受两个参数——第一个是您要替换的字符(在您的例子中是白色 space),第二个是您想要替换的字符。

#Your string
s = "--w --Develop origin plot --+3.5"

d = s.replace(' ','').split('--')[1:] 
print(d)

>>['w', 'Developoriginplot', '+3.5']

然后您可以通过此列表的索引来引用您的参数。

希望对您有所帮助。

" ".join() 首先是参数,然后按 -- 拆分。

import sys

args = " ".join(sys.argv) # join by spaces
args = [a.strip() for a in args.split("--")] # split by --, remove any extra spaces
print(args)
print("\n".join(args))

输出:

$ python plot.py --w --Develop origin plot --+3.5
['plot.py', 'w', 'Develop origin plot', '+3.5']
plot.py
w
Develop origin plot
+3.5