1,105,328 Community Members

Fixing function problem

Member Avatar
padton
Newbie Poster
16 posts since Sep 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
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

Member Avatar
radhakrishna.p
Posting Whiz in Training
281 posts since Nov 2012
Reputation Points: 29 [?]
Q&As Helped to Solve: 64 [?]
Skill Endorsements: 11 [?]
 
1
 

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

so that we try to slove your problem

Member Avatar
padton
Newbie Poster
16 posts since Sep 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Thanks radha krishna,

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

Member Avatar
vegaseat
DaniWeb's Hypocrite
6,984 posts since Oct 2004
Reputation Points: 1,544 [?]
Q&As Helped to Solve: 1,872 [?]
Skill Endorsements: 67 [?]
Moderator
 
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'])])
'''
Member Avatar
padton
Newbie Poster
16 posts since Sep 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
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: