Je ne fais que tester le composant CSV à Python et j'ai eu des problèmes avec elle.
J'ai une chaîne de CSV assez standard et les options par défaut semblent toutes correspond à mon test, mais le résultat ne devrait pas grouper 1, 2, 3, 4 d'affilée et 5, 6, 7, 8 dans un Rangée? P>
Merci beaucoup pour toute illumination fournie! p>
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import csv >>> c = "1, 2, 3, 4\n 5, 6, 7, 8\n" >>> test = csv.reader(c) >>> for t in test: ... print t ... ['1'] ['', ''] [' '] ['2'] ['', ''] [' '] ['3'] ['', ''] [' '] ['4'] [] [' '] ['5'] ['', ''] [' '] ['6'] ['', ''] [' '] ['7'] ['', ''] [' '] ['8'] [] >>>
4 Réponses :
test = csv.reader (c.split ('\ n')) p>
CSV.Reader attend un iérêteur. Vous l'avez donné "1, 2, 3, 4 \ n 5, 6, 7, 8 \ n" code>; L'itération produit des caractères. Essayez de lui donner ["1, 2, 3, 4 \ n", "5, 6, 7, 8 \ n"] - itération produira des lignes. P>
Ainsi, utilisez csv.reader code> prend une ligne de retour itérateur ou itérateur, voir Les docs . Vous y passez une chaîne, qui est un iérent de retour des personnages simples. P>
csv.reader (c.splitlines ()) code> ou constructions similaires! p>
Pour que cela ait plus de fichier, essayez ceci.
import StringIO c= StringIO.StringIO( "1, 2, 3, 4\n 5, 6, 7, 8\n" )
Notez que j'ai fermé celui-ci au lieu du plus récent parce que les réponses à l'autre sont utiles ici, mais pas tant l'autre. Cela obtient toujours le badge de l'originalité.