2014-07-17 5 views
-1

Voici la liste que j'ai:liste Convertir chaîne délimitée par des virgules

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

j'utilisais ce qui suit:

issue_string = ','.join(map(str, issue_search)) 

Mais la sortie est:

NEC-1519, NEC-1516, NEC-1518 

Je suis confus sur la sortie. Comment afficher uniquement le key? Comment obtenir l'autre texte aussi dans le format de chaîne?

+0

Ce n'est pas valide la syntaxe de Python. Comment avez-vous eu cette sortie? – CoryKramer

+0

Avez-vous vérifié les méthodes '__str__' ou' __repr__'? – user189

Répondre

2

Ce que vous voyez dans la liste correspond aux valeurs renvoyées par les objets __repr__ method de chaque objet. Si vous voulez que ces valeurs, la carte la liste repr au lieu de str:

issue_string = ','.join(map(repr, issue_search)) 

Voici une démonstration avec 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

Vous appelez str sur les objets à l'intérieur issue_search avant de les joindre. Alors évidemment, l'appel de str sur un "JIRA Issue" ne donnera que la clé.

La valeur de retour de str est déterminée par la méthode __str__ d'un objet qui est probablement définie de la manière décrite pour le type "JIRA Issue". Si vous ne pouvez pas changer la méthode, vous pouvez également appeler repr sur les objets à la place, ou spécifier une fonction de format personnalisé:

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

Dans votre dernier exemple, plutôt que de "mapper" une fonction 'lambda' vous devriez simplement utiliser une expression de générateur:' "," .join ("{} ({})". Format (x.key, x.id) pour x dans question_search) '. Le style fonctionnel de 'map' n'est vraiment qu'un meilleur choix qu'un genexp (ou une compréhension de liste/dict/set) si la fonction que vous appliquez existe déjà (comme quand vous utilisez' str' ou 'repr '). – Blckknght

Questions connexes