web-dev-qa-db-fra.com

Comment importer un fichier csv dans un tableau de données?

J'ai une ligne de code dans un script qui importe des données d'un fichier texte avec beaucoup d'espaces entre les valeurs dans un tableau pour une utilisation ultérieure.

textfile = open('file.txt')
data = []
for line in textfile:
    row_data = line.strip("\n").split()
    for i, item in enumerate(row_data):
        try:
            row_data[i] = float(item)
        except ValueError:
            pass
    data.append(row_data)

J'ai besoin de changer cela d'un fichier texte à un fichier csv. Je ne veux pas simplement changer ce texte pour qu'il soit divisé en virgules (car certaines valeurs peuvent avoir des virgules si elles sont entre guillemets). Heureusement, j'ai découvert une bibliothèque csv que je peux importer et qui peut gérer cela.

import csv
with open('file.csv', 'rb') as csvfile:
    ???

Comment puis-je charger le fichier csv dans le tableau de données?

Si cela fait une différence, voici comment les données seront utilisées:

row = 0
for row_data in (data):
    worksheet.write_row(row, 0, row_data)
    row += 1
9
GFL

En supposant que le fichier csv soit délimité par des virgules, la manière la plus simple d'utiliser le module csv dans Python 3 serait probablement:

import csv

with open('testfile.csv', newline='') as csvfile:
    data = list(csv.reader(csvfile))

print(data)

Pour Python 2, utilisez open('testfile.csv', 'rb')] pour ouvrir le fichier.

16
martineau

Vous pouvez utiliser pandas library ou numpy pour lire le fichier CSV. Si votre fichier est séparé par des tabulations, utilisez '\ t' à la place de la virgule à la fois dans sep et delimiter arguments ci-dessous.

import pandas as pd 
myFile = pd.read_csv('filepath', sep=',')

Ou

 import numpy as np
 myFile = np.genfromtxt('filepath', delimiter=',')
8
Humi