从列表元素python中删除括号

时间:2015-07-01 16:30:40

标签: 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等,但我不确定如何。使用字典或其他东西可能更好。提前感谢您的任何反馈。

3 个答案:

答案 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)

我猜你正在使用OrcaFlex而你的实际问题是得到Line对象的名字。

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

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