定义字符串中的Python语法错误

2024-04-26 17:54:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须使用这个代码:

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,}}

这是可行的,但我的地图将自动创建,所以使用这不是一个解决方案。你知道吗


Tags: 代码numberlocal地图语法argbsdresult
2条回答

在最后的代码中,单词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

首先需要使用,拆分本地参数,然后使用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'}}

相关问题 更多 >