2014-06-22 1 views
0

Comment puis-je obtenir le résultat attendu ci-dessous?manipulation de chaîne simple en python

import glob 
infiles = glob.glob('E:\\test\\*.txt') 
print infiles 
['E:\\test\\a.txt', 'E:\\test\\b.txt', 'E:\\test\\c.txt', 'E:\\test\\d.txt'] 

résultat attendu est:

'E:\\test\\a.txt','E:\\test\\b.txt','E:\\test\\c.txt','E:\\test\\d.txt' 

Ma tentative est:

infiles = ','.join(x for x in infiles) 
print infiles 
E:\test\a.txt,E:\test\b.txt,E:\test\c.txt,E:\test\d.txt 

Répondre

3
print ','.join(map(repr, infiles)) 

Vous êtes à la recherche d'une sortie contenant les représentations repr des chaînes dans les listes, pas le contenu littéral des chaînes. La cartographie repr sur la liste vous obtient cela.

1

simplement:

import glob 
infiles = glob.glob('E:\\test\\*.txt') 
print infiles.__str__()[1:-1] 

print est en fait print infiles.__str__() sous le capot, et que vous voulez vous débarrasser de la [ et ] ...

+1

Plutôt que d'appeler directement la méthode magique, il est généralement préférable utiliser le 'str' intégré. Mis à part les problèmes de style, il revient correctement à '__repr__' quand' __str__' n'est pas présent. Ce n'est pas un problème pour les listes, mais se souvenir des types qui implémentent les méthodes magiques est un problème inutile. – user2357112

+0

En outre, cela entraîne des espaces dans la sortie que la sortie souhaitée n'a pas. Cela pourrait être un problème, ou cela pourrait être sans importance. – user2357112

+0

@ user2357112, Merci pour la suggestion très utile de 'str (infiles)'. –