Owlready2中如何处理Python内以数字开头的无效属性名访问问题
报错原因
Python语法不允许标识符以数字开头,使用chebi.2_STAR这种点语法访问属性时,Python会将开头的2识别为十进制数字字面量,后续的_STAR不符合数字语法规则,因此直接抛出SyntaxError: invalid decimal literal语法错误,该限制属于Python基础语法约束,和Owlready2本身功能无关。
正确访问方案
以下两种方案都可以正常获取目标资源:
- 方案1:使用Python内置
getattr()函数(通用方案,适用于所有不符合Python标识符命名规则的属性访问场景)
# 第一步获取目标资源 star_2_resource = getattr(chebi, "2_STAR") # 第二步访问属性 res_id = star_2_resource.id # 也可简写为一行 res_id = getattr(chebi, "2_STAR").id
- 方案2:通过完整IRI直接获取(Owlready2原生方案,适合已知资源完整IRI的场景)
from owlready2 import default_world # 填入你已知的资源完整URI即可直接获取资源对象 star_2_resource = default_world["http://purl.obolibrary.org/obo/chebi.owl#2_STAR"] # 访问对应属性 res_id = star_2_resource.id
内容的提问来源于stack exchange,提问作者Yasunori
相关产品推荐
相关产品推荐

