python-3.x - 是否可以将 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 个键值对。
解决方案
这应该可以工作,只要字符串尊重以逗号分隔的“键:值”对,并且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 跨度。
推荐阅读
- java - 将用户输入的数字转换为单词
- matlab - MATLAB中N个函数句柄的总和
- python-3.x - 结构通过套接字解包可变长度字符串时出错
- html - 当我将其编程为其他方式时,为什么显示属性会恢复为其默认值?
- python - 如何在不使用循环的情况下计算给定矩阵的所有列向量对之间的欧几里得距离?(仅使用 numpy)
- ios - 多个用户项目的应用内自动续订订阅(iOS)
- extjs - 在 ExtJS 4.1 中单击外部窗口时如何关闭窗口?
- unix - Unix grep、sed、awk 命令从日志文件中查找请求的平均响应时间
- image - 如何将图像转换为字节数组?
- java - 自定义装配中的斐波那契数列