已定义字符串中的Python SyntaxError

时间:2014-10-20 18:12:06

标签: python syntax

我必须使用此代码:

local_arg = "1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, "
result_arg = {}
result_arg = {"inf" : {local_arg}}

语法错误(语法无效):result_arg = {"infos" : {local_arg}} 怎么了?

我想用它来做这件事:

result_arg["inf"][number]

我尝试过使用:

result_arg = {}
result_arg = {"inf" : {1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1,}}

这样可行,但我的地图将自动创建,因此使用它不是解决方案。

2 个答案:

答案 0 :(得分:0)

首先需要将local_arg与,分开,然后将len>1:分开(为避免" "):

>>> local_arg.split(',')
['1 : ASD|2|3|4|5', ' 2 : BSD|4|3|2|1', ' ']

所以你可以这样做:

>>> s=[j.split(':') for j in local_arg.split(',') if len(j)>1]
>>> s
[['1 ', ' ASD|2|3|4|5'], [' 2 ', ' BSD|4|3|2|1']]
>>> {'inf':{i:j for i,j in s }}
{'inf': {'1 ': ' ASD|2|3|4|5', ' 2 ': ' BSD|4|3|2|1'}}

答案 1 :(得分:0)

在最后的代码中,dictionay result_arg将如下所示,

{'inf': {'1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, '}}

此处result_arg['inf']set。不是具有键值对的字典。所以你得到错误。您的代码中可能还有其他一些问题,它应该TypeError而不是SyntaxError

从字符串中,您可以这样处理,

local_arg = "1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, "
d = [itm.split(':') for itm in local_arg.strip().split(',') if itm]
c = dict((int(itm[0]), itm[1]) for itm in d)
result_arg = {}
result_arg = {"inf" : c}

现在你可以打印了,

print result_arg["inf"][1]

会给你这样的输出,

ASD|2|3|4|5