Building list of lists from CSV file

This is how I opened a .csv file and imported columns of data as numpy arrays - naturally, you don't need numpy arrays, but...

data = {}

app = QApplication( sys.argv )
fname = unicode ( QFileDialog.getOpenFileName() )
app.quit()
filename = fname.strip('.csv') + ' for release.csv'

#open the file and skip the first two rows of data
imported_array = np.loadtxt(fname, delimiter=',', skiprows = 2)

data = {'time_s':imported_array[:,0]}
data['Speed_RPM'] = imported_array[:,1]

This should get you on the right track:

import csv 
import sys #used for passing in the argument
file_name = sys.argv[1] #filename is argument 1
with open(file_name, 'rU') as f:  #opens PW file
    reader = csv.reader(f)
    data = list(list(rec) for rec in csv.reader(f, delimiter=',')) #reads csv into a list of lists

    for row in data:
        print row[0] #this alone will print all the computer names
        for username in row: #Trying to run another for loop to print the usernames
            print username

Last two lines will print all of the row (including the "computer"). Do

for x in range(1, len(row)):
    print row[x]

... to avoid printing the computer twice.

Note that f.close() is not required when using the "with" construct because the resource will automatically be closed when the "with" block is exited.

Personally, I would just do:

import csv 
import sys #used for passing in the argument
file_name = sys.argv[1] #filename is argument 1
with open(file_name, 'rU') as f:  #opens PW file
    reader = csv.reader(f)
    # Print every value of every row. 
    for row in reader:
        for value in row: 
            print value

That's a reasonable way to iterate through the data and should give you a firm basis to add whatever further logic is required.


It can be done using the pandas library.

import pandas as pd

df = pd.read_csv(filename)

list_of_lists = df.values.tolist()

This approach applies to other kinds of data like .tsv, etc.

Tags:

Python

Csv

List