2014-07-17 76 views
-1

以下是我的清单:转换列表以逗号分隔的字符串

>>> 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?如何以字符串格式获取其他文本?

+0

这是无效的Python语法。你是如何得到这个输出的? – CoryKramer

+0

您是否检查过__str__或__repr__方法? – user189

回答

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

您加入他们之前内issue_search呼吁对象str。显然,在“JIRA问题”上拨打str只会导致关键。

str的返回值由对象的__str__方法确定,该方法很可能以所述方式为“JIRA问题”类型定义。如果无法更改方法,则也可以在对象上调用repr,或者指定自定义格式函数:

>>> ', '.join(map(lambda x: '{} ({})'.format(x.key, x.id), issue_search)) 
'NEC-1519 (991356), NEC-1516 (991344), NEC-1518 (990463)' 
+0

在你的最后一个例子中,而不是映射'lambda'函数,你应该使用一个生成器表达式:'“,”.join(“{}({})”。format(x.key,x.id )for x in issue_search)'。如果你正在使用的函数已经存在(比如当你使用'str'或'repr时''map'的函数风格只是一个比genexp(或者list/dict/set comprehension)更好的选择')。 – Blckknght

相关问题