1.11M Members

Fixing function problem

 
0
 

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

 
1
 

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

so that we try to slove your problem

 
0
 

Thanks radha krishna,

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

 
2
 

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'])])
'''
 
0
 

Thank-you all for your help.

Question Answered as of 1 Year Ago by vegaseat and radhakrishna.p
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: