如何将PyTaxonomies打印结果存入列表并获取预期格式内容?
问题:如何将MISP Taxonomy对象转换为可读字符串列表?
已完成PyTaxonomies的安装与初始化:
!git clone https://github.com/MISP/PyTaxonomies cd PyTaxonomies !git submodule init && git submodule update !python3 setup.py install
from pytaxonomies import Taxonomies taxonomies = Taxonomies()
需求:将以下循环的打印结果存入列表:
for i in taxonomies.values(): print(i)
尝试代码(存在问题):
taxonomies = [] for i in taxonomies.values(): taxonomies.append(i) taxonomies
得到的结果是Taxonomy对象实例列表:
[<pytaxonomies.api.Taxonomy at 0x7f67b1d86250>,...]
期望得到的格式:
["CERT-XLM:abusive-content=\"spam\"", ..., "workflow:state=\"rejected\""]
解决方案
问题分析
- 错误将空列表赋值给
taxonomies,覆盖了原本的Taxonomies实例,后续调用.values()实际是对空列表操作,这是核心错误之一。 - 直接存入
Taxonomy对象会保留实例引用,而非我们需要的可读字符串格式。
正确代码
# 新建列表存储字符串,避免覆盖原taxonomies实例 taxonomy_strings = [] for taxon in taxonomies.values(): # 调用str()获取对象的可读字符串,与print(taxon)输出内容一致 taxonomy_strings.append(str(taxon)) # 输出目标格式列表 taxonomy_strings
原理说明
print(taxon)能输出可读格式,是因为Python自动调用了Taxonomy对象的__str__方法,因此直接使用str(taxon)就能获取相同的字符串内容,存入列表后即可得到期望的格式。
内容的提问来源于stack exchange,提问作者xavi
相关产品推荐
相关产品推荐

