7
votes

Python CSV Question

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


1 commentaires

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é.


4 Réponses :


2
votes

test = csv.reader (c.split ('\ n'))


0 commentaires

8
votes

CSV.Reader attend un iérêteur. Vous l'avez donné "1, 2, 3, 4 \ n 5, 6, 7, 8 \ n" ; 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.


0 commentaires

3
votes

csv.reader 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.

Ainsi, utilisez csv.reader (c.splitlines ()) ou constructions similaires!


0 commentaires

2
votes

Pour que cela ait plus de fichier, essayez ceci.

import StringIO
c= StringIO.StringIO( "1, 2, 3, 4\n 5, 6, 7, 8\n" )


0 commentaires