将列表转换为逗号分隔字符串
以下是我拥有的列表:
>>> issue_search
[<JIRA Issue: key=u'NEC-1519', id=u'991356'>, <JIRA Issue: key=u'NEC-1516', id=u'991344'>, <JIRA Issue: key=u'NEC-1518', id=u'990463'>]
>>>
我之前使用的是:
issue_string = ','.join(map(str, issue_search))
但是输出结果是:
NEC-1519, NEC-1516, NEC-1518
我对这个输出感到困惑。为什么只有 key
被显示出来?我该怎么才能把其他文本也以字符串的形式显示出来呢?
2 个回答
0
你在把 issue_search
里的对象连接起来之前,先对它们用了 str
。所以,调用 str
来处理一个“JIRA 问题”时,结果只会得到它的关键字。
str
返回的内容是由对象的 __str__
方法决定的,这个方法可能是专门为“JIRA 问题”类型定义的。如果你不能修改这个方法,你也可以试着用 repr
来处理这些对象,或者指定一个自定义的格式函数:
>>> ', '.join(map(lambda x: '{} ({})'.format(x.key, x.id), issue_search))
'NEC-1519 (991356), NEC-1516 (991344), NEC-1518 (990463)'
2
你在列表中看到的内容是每个对象的 __repr__
方法 返回的值。如果你想要这些值,可以把列表中的每个元素用 repr
来处理,而不是用 str
:
issue_string = ','.join(map(repr, issue_search))
下面是一个使用 decimal.Decimal
的示例:
>>> from decimal import Decimal
>>> lst = [Decimal('1.2'), Decimal('3.4'), Decimal('5.6')]
>>> lst
[Decimal('1.2'), Decimal('3.4'), Decimal('5.6')]
>>> print ','.join(map(str, lst))
1.2,3.4,5.6
>>> print ','.join(map(repr, lst))
Decimal('1.2'),Decimal('3.4'),Decimal('5.6')
>>>