从列表元素中删除括号

2024-05-16 20:00:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个python新手;很可能有人问过类似的问题,尽管我找不到。当我从另一个程序中创建的模型中查询对象时,会得到如下列表:

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等,但我不知道如何。最好用字典或别的什么东西。提前感谢您的反馈。你知道吗


Tags: 对象in模型程序obj列表formodel
3条回答

我猜您正在使用OrcaFlex,而您的实际问题是获取行对象的名称。你知道吗

相对较新版本的pyoxf API将包含一些用于检索行的帮助程序,文档中的示例表明名称可用作“name”属性:

lineNames = [lineObject.name for lineObject in model.lines]

您得到的是<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'

如果print str(lineObj[0])生成注释中所列的字符串<Line: 'Upper1'>,则应该可以清理列表:

lineObj = [str(item).split("'")[1] for item in lineObj]

print lineObj[0]现在产生Upper1

相关问题 更多 >