Comment importer un fichier csv dans un tableau de données?
J'ai une ligne de code dans un script que l'importation des données à partir 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 modifier un fichier texte vers un fichier csv. Je ne veux pas changer ce texte pour diviser sur des virgules (depuis certaines valeurs peuvent avoir des virgules si ils sont entre guillemets). Heureusement, j'ai vu il y a un csv de la bibliothèque, je peux importe 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, c'est la façon dont les données seront utilisées:
row = 0
for row_data in (data):
worksheet.write_row(row, 0, row_data)
row += 1
- vous avez 2 missions: 1) j'ai besoin de modifier un fichier texte vers un fichier csv; 2) Comment puis-je charger le fichier csv dans le tableau de données? Commencez à poster votre premier
file.txt
contenu
Vous devez vous connecter pour publier un commentaire.
En supposant que le fichier csv est délimité par des virgules, de la façon la plus simple à l'aide de la
csv
module en Python 3 serait probablement:Pour Python 2, utilisez
open('testfile.csv', 'rb')
pour ouvrir le fichier.data =
ligne de réitérer lui-même pour chaque ligne du fichier csv? Serais-je capable de placer les données dans laworksheet.write_row(row, 0, row_data)
ligne directement, au lieu d'avoir à le mettre en premier dans un tableau et ensuite de lire chaque ligne du tableau?data
). À partir de laxlsxwriter.write_row()
la documentation, il semble qu'il pourrait également être fait plus efficacement en un seul appel: c'est à direworksheet.write_row(row, 0, data)
au lieu d'utiliser la boucle et de faire plusieurs appels qui font chacun une rangée-un-temps.TypeError: unhashable type: 'list'
TypeError
il semble que vous ne pouvez pas être en train de passer un ouvrir le fichier d'objet àcsv.reader()
—mais sans plus d'informations et être en mesure de voir votre code, je ne peux que faire des suppositions. Poster une question.data = list(csv.reader(csvfile))
et len(data) = 1 et print(data) est['[email protected]','[email protected].','...']
csv.reader()
est de retour. Merci de ne pas poster d'autres questions sous forme de commentaires parce que je ne peux pas répondre à plus d'eux.Vous pouvez utiliser les pandas de la bibliothèque numpy ou de lire le fichier CSV. Si votre fichier est séparé par des tabulations, puis utilisez "\t " à la place de la virgule dans les deux
sep
etdelimiter
arguments ci-dessous.Ou