12

I have a CSV file containing the following.

0.000264,0.000352,0.000087,0.000549
0.00016,0.000223,0.000011,0.000142
0.008853,0.006519,0.002043,0.009819
0.002076,0.001686,0.000959,0.003107
0.000599,0.000133,0.000113,0.000466
0.002264,0.001927,0.00079,0.003815
0.002761,0.00288,0.001261,0.006851
0.000723,0.000617,0.000794,0.002189

I want convert the values into an array in Python and keep the same order (row and column). How I can achieve this?

I have tried different functions but ended with error.

bunbun
  • 2,595
  • 3
  • 34
  • 52
  • what is error? and how are you attempting to read the csv file? are you using the `csv` module? – Tom Myddeltyn May 11 '16 at 21:53
  • is not a error, I dont know how convert to cvs to array – Edian Franklin Franco de los S May 11 '16 at 21:58
  • Questions seeking debugging help (**"why isn't this code working?"**) must include the desired behavior, *a specific problem or error* and *the shortest code necessary* to reproduce it **in the question itself**. Questions without **a clear problem statement** are not useful to other readers. See: [How to create a Minimal, Complete, and Verifiable Example](http://stackoverflow.com/help/mcve). – MattDMo May 11 '16 at 22:02
  • Does your CSV file actually contain the parentheses `( )`? If so, it's not valid CSV. How was the file generated? – MattDMo May 11 '16 at 22:05
  • @MattDMo dont have parathesis, do have any idea how I can convert from cvs to array, keep the same orden – Edian Franklin Franco de los S May 11 '16 at 22:13
  • Are you trying to return a list of lists, then? like `a = [[123, 234, 345], [456, 567, 678]]` but with your numbers instead? – CodeJockey May 11 '16 at 22:17
  • If you don't have the parens the csv lib will do the parsing so where is the problem? – Padraic Cunningham May 11 '16 at 22:24

3 Answers3

19

You should use the csv module:

import csv

results = []
with open("input.csv") as csvfile:
    reader = csv.reader(csvfile, quoting=csv.QUOTE_NONNUMERIC) # change contents to floats
    for row in reader: # each row is a list
        results.append(row)

This gives:

[[0.000264, 0.000352, 8.7e-05, 0.000549], 
[0.00016, 0.000223, 1.1e-05, 0.000142], 
[0.008853, 0.006519, 0.002043, 0.009819], 
[0.002076, 0.001686, 0.000959, 0.003107], 
[0.000599, 0.000133, 0.000113, 0.000466], 
[0.002264, 0.001927, 0.00079, 0.003815], 
[0.002761, 0.00288, 0.001261, 0.006851], 
[0.000723, 0.000617, 0.000794, 0.002189]]
MattDMo
  • 100,794
  • 21
  • 241
  • 231
3

If your file doesn't contain parentheses

with open('input.csv') as f:
    output = [float(s) for line in f.readlines() for s in line[:-1].split(',')]
    print(output);
James Buck
  • 1,640
  • 9
  • 13
2

The csv module was created to do just this. The following implementation of the module is taken straight from the Python docs.

import csv 
with open('file.csv','rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',', quotechar='|') 
    for row in reader:
        #add data to list or other data structure

The delimiter is the character that separates data entries, and the quotechar is the quotechar.

Monkeyanator
  • 1,346
  • 2
  • 14
  • 29