Ik heb een regel code in een script dat gegevens importeert uit een tekstbestand met veel spaties tussen waarden in een array om later te gebruiken.
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)
Ik moet dit wijzigen van een tekstbestand in een csv-bestand. Ik wil deze tekst niet zomaar wijzigen om op komma’s te splitsen (aangezien sommige waarden komma’s kunnen hebben als ze tussen aanhalingstekens staan). Gelukkig zag ik dat er een csv-bibliotheek is die ik kan importeren en die dit aankan.
import csv
with open('file.csv', 'rb') as csvfile:
???
Hoe kan ik het csv-bestand in de gegevensarray laden?
Als het een verschil maakt, is dit hoe de gegevens worden gebruikt:
row = 0
for row_data in (data):
worksheet.write_row(row, 0, row_data)
row += 1
Antwoord 1, autoriteit 100%
Ervan uitgaande dat het CSV-bestand wordt gescheiden door komma’s, is de eenvoudigste manier om de module csv
in Python 3te gebruiken waarschijnlijk:
import csv
with open('testfile.csv', newline='') as csvfile:
data = list(csv.reader(csvfile))
print(data)
U kunt andere scheidingstekens opgeven, zoals tabtekens, door ze op te geven bij het maken van de csv.reader
:
data = list(csv.reader(csvfile, delimiter='\t'))
Voor python & nbsp; 2 , gebruik open('testfile.csv', 'rb')
om het bestand te openen.
Antwoord 2, Autoriteit 32%
U kunt Panda’s Bibliotheek of Numpy gebruiken om het CSV-bestand te lezen. Als uw bestand tabblad is, gebruikt u vervolgens ‘\ t’ in plaats van komma in zowel sep
en delimiter
argumenten hieronder.
import pandas as pd
myFile = pd.read_csv('filepath', sep=',')
of
import numpy as np
myFile = np.genfromtxt('filepath', delimiter=',')
Antwoord 3, Autoriteit 3%
Ik denk dat de eenvoudigste manier om dit te doen is via Pandas:
import pandas as pd
data = pd.read_csv(FILE).values
Hiermee geeft u een numpy-reeks waarden weer van een dataframe gemaakt van de CSV. Zie de documentatie hier .