我是一个蟒蛇新手;很可能有人问过类似的问题,但我找不到。当我从另一个程序中创建的模型中查询对象时,我得到一个如下列表:
lineObj = [obj for obj in model.objects if obj.type == OF.otLine]
print lineObj
[<Line: 'Upper1'>, <Line: 'Upper2'>, <Line: 'MooringLine'>, <Line: 'BuoyLine'>, <Line: 'RiserLine1'>, <Line: 'RiserLine2'>, <Line: 'AnchorLine1'>, <Line: 'AnchorLine2'>, <Line: 'AnchorLine3'>]
print lineObj[0]
<Line: 'Upper1'>
我希望能够只提取文字Upper1,Upper2等,但我不确定如何。使用字典或其他东西可能更好。提前感谢您的任何反馈。
答案 0 :(得分:0)
如果setup()
生成了评论中列出的字符串print str(lineObj[0])
,则应该可以清理您的列表:
<Line: 'Upper1'>
lineObj = [str(item).split("'")[1] for item in lineObj]
现在生成print lineObj[0]
答案 1 :(得分:0)
您将获得<Line: 'Upper1'>
,因为这是对象的__str__
函数的格式化方式。
获得所需结果的最佳方法是找出您要查找的对象的属性。在这种情况下,即name
。
lineObj = [obj.name for obj in model.objects if obj.type == OF.otLine]
print lineObj
>>> ['Upper1', 'Upper2', 'MooringLine', 'BuoyLine', 'RiserLine1', 'RiserLine2', 'AnchorLine1', 'AnchorLine2', 'AnchorLine3']
print lineObj[0]
>>> 'Upper1'
答案 2 :(得分:0)