繁体   English   中英

Python 解析复杂列表,实际上只是 1 个字符串

[英]Python Parsing through complex list that is just really 1 string of characters

我将字段“区域”的一个非常长的字典解析为一个名为 scanner_data 的变量。 在下一段中,我将展示 scanner_data 的类型。 之后的下一行是 scanner_data 的内容。

变量:scanner_data。 类型是:<class 'list'>

[{'id': '3', 'name': 'rcomultitfw', ALL THE REST OF THE STRING IS WORTHLESS TO ME. IT WILL GO ON FOR another 700 letters!

我想为 rcomultitfw 的结果解析名称字段。 我试过.split()。 我已经尝试将实际上是字符串的列表转换为字典,以便我可以再次解析它,但是它崩溃了,或者我的 python 技能达不到标准。 如果你 print(scanner_data[1]) 它表明它超出范围所以它是这个列表的唯一结果。

仅供参考,此数据是从带有 PyTenables.sc 的 tenables 中获取的,不确定这是否有帮助。 我的最终目标是从各个可维护扫描仪的信息中解析扫描区域数据。

请请帮助。 到目前为止,我一直在享受 Python 编程,现在我正在拔头发并头痛。 谢谢!

如果你能发布代码和控制台细节,那就更好了。 但是,从显示的内容来看,返回的数据是列表类型,并且只包含一个索引,因此像“.split()”这样的函数将不起作用,因为它们仅适用于字符串类型的变量。 您可能缺少的是首先将字典包装在数组中,然后尝试使用键访问该字典。 这是一个例子:

scanner_data = [{'id': '3', 'name': 'rcomultitfw', 'extras':'ALL THE REST OF THE STRING I'}]
print(scanner_data[0]['name'])

但是,由于您的问题不是很清楚,我将尝试针对其他两种可能的情况给出答案:

场景 A,有一个包含在数组中的字符串中的字典:

import ast

scanner_data = ["{'id': '3', 'name': 'rcomultitfw', 'extras':'ALL THE REST OF THE STRING I'}"]
dict_data = scanner_data[0]
parsed_dict = ast.literal_eval(dict_data)
print(parsed_dict['name'])

场景 B,有一个错误的字典会破坏解析器:

import ast

scanner_data = ["{'id': '3', 'name': 'rcomultitfw', 'ALL THE REST OF THE STRING I'}"]
dict_data = scanner_data[0]
adjusted_string = dict_data.split(',')
adjusted_string = adjusted_string[0] + "," + adjusted_string[1] + '}'
parsed_dict = ast.literal_eval(adjusted_string)
print(parsed_dict['name'])

这不是调整有问题的词典的最佳方法,但这可以适用于您自己的用例,并且如果您在 scanner_data 列表中有多个词典,则可以将此逻辑循环

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM