我想从arg_list
创建一个词典:
arg_list = "--config=pools_issuance.config --current_mm=9 --current_yy=15 --agency_id='FH'"
E.g:
input = {}
for arg in arg_list:
x = arg.split(' --')
input[x[0]] = x[0]
这不起作用并且给了我:
{' ': ' ',
"'": "'",
'-': '-',
'.': '.',
'1': '1',
'5': '5',
'9': '9',
'=': '=',
'F': 'F',
'H': 'H',
'_': '_',
'a': 'a',
...
'y': 'y'}
我不明白为什么。
答案 0 :(得分:0)
您应该使用标准argparse
库
但是,如果您不想,请继续阅读。
>>> arg_list = "--config=pools_issuance.config --current_mm=9 --current_yy=15 --agency_id='FH'"
你的主要问题是你遍历字符串中的每个字符:
>>> for arg in arg_list:
... print arg
-
-
c
o
n
f
i
...
我们可以根据空格分割字符串:
>>> arg_list.split()
['--config=pools_issuance.config',
'--current_mm=9',
'--current_yy=15',
"--agency_id='FH'"]
然后为每个参数剥离' - ',并在'='
上拆分以获取键值对:
>>> [arg.strip('--').split('=') for arg in arg_list.split()]
[['config', 'pools_issuance.config'],
['current_mm', '9'],
['current_yy', '15'],
['agency_id', "'FH'"]]
然后将它们传递给字典构造函数:
>>> dict(arg.strip('--').split('=')
... for arg in arg_list.split())
{'agency_id': "'FH'",
'config': 'pools_issuance.config',
'current_mm': '9',
'current_yy': '15'}
您可能希望清除部分值,因为数字将是字符串,而agency_id
将是包含引号的字符串:"'FH'"