首页 > 解决方案 > 是否可以将 cli 输出(字符串)转换为 Python 3 中的字典

问题描述

我有这个从 CLI 应用程序输出的原始字符串。

ScriptSessions = 101 [default: 100, range: 0-500]

输出键可以有不同的名称,值可以是字符串,有时还包括类似值的范围。我写了一个小函数来清理这样的字符串。

differentName:value,default:100,range:0-500

是否有可能以某种方式将此字符串转换为字典?那么像这样的调用 var[default] 会返回 100 吗?我已经创建了 grep 这第二个字符串的函数,但它会很慢。当前函数预计会为每个键值对调用超过 1000 次测试(可能是 3000 到 4000 次)。如果我可以加载一次字典,然后查询字典以获取结果,我希望它会快得多。CLI 返回的一些字符串有大约 8 到 10 个键值对。

标签: python-3.xdictionary

解决方案


这应该可以工作,只要字符串尊重以逗号分隔的“键:值”对,并且s是您的字符串:{w.split(':')[0]: w.split(':')[1] for w in s.split(',')}

它是如何工作的:字符串使用逗号分割:

>>> s = 'differentName:value,default:100,range:0-500'
>>> s.split(',')
['differentName:value', 'default:100', 'range:0-500']

然后这个列表中的每个子字符串被拆分,使用分号作为字典的键:值对:

>>> s = 'differentName:value,default:100,range:0-500'
>>> {w.split(':')[0]: w.split(':')[1] for w in s.split(',')}
{'differentName': 'value', 'default': '100', 'range': '0-500'}

至于这种方式是否比另一种方式更有效,我无法确定。

如果这可能有用,pypi 上有一个 intspan 包可用于处理 int 跨度。


推荐阅读