2010-05-20 10 views
1

Lorsque j'essaie d'écrire un champ contenant des espaces, il est divisé en plusieurs champs sur l'espace. Qu'est-ce qui cause ça? Ça me rend fou. MerciÉcrire des espaces blancs dans des champs CSV en Python?

data = open("file.csv", "wb") 
w = csv.writer(data) 
w.writerow(['word1', 'word2']) 
w.writerow(['word 1', 'word2']) 
data.close() 

Je vais 2 champs (mot1, mot2) pour le premier exemple et 3 (mot, 1, WORD2) pour le second.

Répondre

3

Non reproductible ici:

>>> import csv 
>>> data = open("file.csv", "wb") 
>>> w = csv.writer(data) 
>>> w.writerow(['word1', 'word2']) 
>>> w.writerow(['word 1', 'word2']) 
>>> data.close() 
>>> 
[1]+ Stopped     python2.6 
$ cat file.csv 
word1,word2 
word 1,word2 
$ 

Qu'est-ce que vous voyez quand vous faites exactement ce (ou la fenêtre équivalente, le contrôle-Z pour quitter l'interprète où je l'ai fait pour supend le intepreter et obtenir un invite de shell)? Quel environnement exact et quelle version de Python?

+0

qui renvoie les résultats attendus. J'ouvrais le CSV dans Openoffice, et cela montre des champs supplémentaires. Merci. Je suppose que je ne devrais pas compter sur d'autres programmes pour tester les choses. Je suis sur Ubuntu/Python 2.6.5. – matt

1

Pour moi Python 2.7, qui donne:

word1,word2 
word 1,word2 

comme prévu.

4

L'écriture est correcte, je pense; le problème serait en lecture. Vous n'avez jamais dit ce que vous utilisez pour ouvrir un tel fichier CSV généré. Il peut s'agir de séparer des champs sur une virgule ou un espace.

MISE À JOUR: Essayez ceci, voir si ça aide:

w = csv.writer(data, quoting=csv.QUOTE_ALL) 
+0

Le problème était juste que je me fie à Openoffice pour le vérifier. Merci quand même. – matt

Questions connexes