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
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.
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=',')