将列表转换为逗号分隔的字符串

时间:2014-07-17 16:39:59

标签: python string

以下是我的清单:

>>> 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 :(得分:2)

您在列表中看到的是每个对象的__repr__ method返回的值。如果您需要这些值,请将列表映射到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')
>>>

答案 1 :(得分:0)

在加入str之前,您正在对issue_search内的对象进行调用str。显然,str对“JIRA问题”的调用只会产生密钥。

__str__的返回值由对象的repr方法确定,该方法可能以“JIRA问题”类型的描述方式定义。如果您无法更改方法,您也可以在对象上调用>>> ', '.join(map(lambda x: '{} ({})'.format(x.key, x.id), issue_search)) 'NEC-1519 (991356), NEC-1516 (991344), NEC-1518 (990463)' ,或者指定自定义格式函数:

{{1}}