使用各种独特案例在Python中进行字符串解析

Stu*_*Cat 2 python string parsing

我的目标是将字符串转换为字典.这是它的样子:

[exploit] => 1
[hits] => 1
[completed] => 1
[is_malware] => 1
[summary] => 26.0@13965: suspicious.warning: object contains JavaScript
76.0@14467: suspicious.obfuscation using eval
76.0@14467: suspicious.obfuscation using String.fromCharCode

[severity] => 4
[engine] => 60
Run Code Online (Sandbox Code Playgroud)

所以我已经尝试了几种方法来做到这一点,第一次尝试是split\n,但我遇到了问题,对于[摘要],内容被拆分,所以不起作用.然后我的第二次尝试是split=>遇到问题,一旦我分裂=>它将不知道它必须拆分\n为下一个键.基本上它应该在最后看起来像{exploit:1,命中:1,完成:1 ....}等等

任何帮助将不胜感激.

Mar*_*ers 7

您可以re.findall用来解析文本:

>>> import re
>>> re.findall('\[([^]]+)\] => (.*?)(?=\n\[|$)', s, re.S)
[('exploit', '1'), ('hits', '1'), ('completed', '1'), ('is_malware', '1'), ('summary', '26.0@13965: suspicious.warning: object contains JavaScript\n76.0@14467: suspicious.obfuscation using eval\n76.0@14467: suspicious.obfuscation using String.fromCharCode\n'), ('severity', '4'), ('engine', '60')]
Run Code Online (Sandbox Code Playgroud)

您可以通过调用将这些值放入字典中dict.

>>> dict(re.findall('\[([^]]+)\] => (.*?)(?=\n\[|$)', s, re.S))
{'engine': '60', 'hits': '1', 'severity': '4', 'is_malware': '1', 'summary': '26.0@13965: suspicious.warning: object contains JavaScript\n76.0@14467: suspicious.obfuscation using eval\n76.0@14467: suspicious.obfuscation using String.fromCharCode\n', 'exploit': '1', 'completed': '1'}
Run Code Online (Sandbox Code Playgroud)