解析键=val列表,其中空格具有双重含义(分隔符和val的一部分)



我正在寻找通过直接解析ps eww输出从远程进程中提取环境变量(表示有诸如 psutils 之类的库,但我宁愿不使用它们(

例如:

如果我运行a="foo bar" b=b sleep 100ps eww | grep sleep将返回类似以下内容:

sleep 100 a=foo bar b=b ...

所以在这种情况下的输出应该是:

dict = {"a" : "foo bar", b" : "b" }

到目前为止,我只是简单地获取此输出并根据默认空格分隔符使用split。 但空格是一个有效的参数(请注意,空格也可以是 key=val 格式中 2 个变量之间的值和分隔符的一部分。

知道谁将其拆分为 key=val 结构,以便空格也是值名称的有效字符(但对键名称无效(?

您可以按空格拆分输入字符串(就像您所做的那样(。然后,对于每个子字符串,检查它是否包含=字符。如果是这样,请将其添加为新的键值对;如果没有,请将子字符串追加到上一个键的值。

法典:

dict = {}
key = ''
for s in input.split():
if '=' in s:
key, val = s.split('=')
dict.update({key : val})
else:
if key in dict:
dict[key] += ' ' + s

最新更新