220 votes

Python csv chaîne de tableau

Quelqu'un sait d'un simple de la bibliothèque ou de la fonction pour parser un fichier csv encodé en chaîne et d'en faire un tableau ou un dictionnaire?

Je ne pense pas que je veux que le construit en csv module parce que dans tous les exemples que j'ai vu qui prend filepaths, pas de chaînes.

Merci

319voto

Michał Niklas Points 15907

Je voudrais utiliser StringIO:

import StringIO
import csv

scsv = """1,2,3
a,b,c
d,e,f"""

f = StringIO.StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
    print '\t'.join(row)

plus simple la version avec split() sur les retours à la ligne:

reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
    print '\t'.join(row)

Ou vous pouvez simplement split cette chaîne en lignes à l'aide d' \n comme séparateur, puis split chaque ligne en valeurs, mais de cette façon, vous devez être conscient de citer, donc à l'aide d' csv module est préféré.

78voto

adamk Points 9991

Simple - le csv module fonctionne avec des listes, trop:

>>> a=["1,2,3","4,5,6"]  # or a = "1,2,3\n4,5,6".split('\n')
>>> import csv
>>> x = csv.reader(a)
>>> list(x)
[['1', '2', '3'], ['4', '5', '6']]

8voto

roskakori Points 598

Comme d'autres l'ont déjà souligné, Python comprend un module pour lire et écrire des fichiers CSV. Il fonctionne très bien aussi longtemps que l'entrée personnages restent dans ASCII limites. Dans le cas où vous voulez traiter d'autres codages, plus de travail est nécessaire.

La documentation Python pour le csv module implémente une extension de fichier csv.lecteur, qui utilise la même interface, mais peut gérer d'autres codages et les retours des chaînes unicode. Il suffit de copier et de coller le code à partir de la documentation. Après cela, vous pouvez traiter un fichier CSV comme ceci:

with open("some.csv", "rb") as csvFile: 
    for row in UnicodeReader(csvFile, encoding="iso-8859-15"):
        print row

7voto

nvd Points 176
>>> a = "1,2"
>>> a
'1,2'
>>> b = a.split(",")
>>> b
['1', '2']

3voto

ivan_pozdeev Points 2233

https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader

csvfile peut être n'importe quel objet qui prend en charge l'itérateur protocole et retourne une chaîne de caractères à chaque fois sa méthode next() est appelée

Ainsi, un StringIO.StringIO(), str.splitlines() ou même un générateur sont tous bons.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X