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

-1 投票
2 回答
612 浏览
提问于 2025-04-18 13:44

以下是我拥有的列表:

>>> 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')
>>>

撰写回答