Hi all,

I am trying to use the following python code to read data from two .csv files which have data in the following format, e.g.

1, 23.27, 23.21, 83.22
2, 34.25, 65.31, 34.75
... etc

I seem to be getting an error around during execution of the function. I would really appreciate some help in fixing this problem.

import csv

Or = csv.reader(open('Or.csv'))
Ne = csv.reader(open('Ne.csv'))

def make_dict(data):
    return OrderedDict((d.split(',',1)[0],d) for d in data if d)
updated = make_dict(Or)
updated.update(make_dict(Ne))

# Write new data to file.csv

Thank-you

can you post error details what you are getting so far while running this function?

so that we try to slove your problem

Thanks radha krishna,

The error is idicated on line 7. AttributeError: 'list' object has no attribute 'split'

for d in data will give you list objects

Example ...

'''
contents of file or.csv:
1, 23.27, 23.21, 83.22
2, 34.25, 65.31, 34.75
'''

import csv

Or = csv.reader(open('Or.csv'))

for d in Or:
    print(d, type(d))

''' result ...
['1', ' 23.27', ' 23.21', ' 83.22'], <type 'list'>
['2', ' 34.25', ' 65.31', ' 34.75'], <type 'list'>
'''

You have to do something like this ...

'''
contents of file or.csv:
1, 23.27, 23.21, 83.22
2, 34.25, 65.31, 34.75
'''

import csv
import collections as co

def make_dict(data):
    return co.OrderedDict((d[0], d) for d in data if d)

Or = csv.reader(open('Or.csv'))
updated = make_dict(Or)
print(updated)

''' result ...
OrderedDict([('1', ['1', ' 23.27', ' 23.21', ' 83.22']), ('2', ['2', ' 34.25', ' 65.31', ' 34.75'])])
'''

Edited 3 Years Ago by vegaseat

This question has already been answered. Start a new discussion instead.