471,349 Members | 1,427 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,349 software developers and data experts.

CSV to Array

i have a csv file that has a number in one column and a corresponding number in the second column. i am trying to store both of these numbers in an array. i have done this before with an excel file but how would i go about doing this with a csv file since the command xlsht wont work in csv. here is my code so far to print everything but how do i store them in an array and what would be the correct way to define the array.

Expand|Select|Wrap|Line Numbers
  1. import csv
  2. reader = csv.reader(open("C:\Fahad\New\Dtap.csv", "rb"))
  3. for row in reader:
  4.     print row
  5.  
Nov 2 '07 #1
5 8651
ok i did figure out how to store it in an array but how do i store it as a number. it looks like python is just treating it like a character instead of a number.
also i want the array size to be equal to the number of columns in the csv file what would be the correct way to define that?
Nov 2 '07 #2
bartonc
6,596 Expert 4TB
ok i did figure out how to store it in an array but how do i store it as a number. it looks like python is just treating it like a character instead of a number.
also i want the array size to be equal to the number of columns in the csv file what would be the correct way to define that?
Here's a trick that I use. I hope you find it useful:
Expand|Select|Wrap|Line Numbers
  1. >>> data = ['12.2', 'hello', '7']
  2. >>> converters = (float, str, int)
  3. >>> for i, item in enumerate(data):
  4. ...     print converters[i](item)
  5. ...     
  6. 12.2
  7. hello
  8. 7
  9. >>> 
Nov 2 '07 #3
bvdet
2,851 Expert Mod 2GB
This function is useful when you do not know the types of the data items:
Expand|Select|Wrap|Line Numbers
  1. def convertType(s):
  2.         for func in (int, float, eval):
  3.             try:
  4.                 n = func(s)
  5.                 return n
  6.             except:
  7.                 pass
  8.         return s
Expand|Select|Wrap|Line Numbers
  1. >>> data = ['12.2', 'hello', '7', '[12,24,36,"goodbye"]', '12*12']
  2. >>> for item in data:
  3. ...     print convertType(item)
  4. ...     
  5. 12.2
  6. hello
  7. 7
  8. [12, 24, 36, 'goodbye']
  9. 144
  10. >>> 
Nov 2 '07 #4
bartonc
6,596 Expert 4TB
This function is useful when you do not know the types of the data items:
Expand|Select|Wrap|Line Numbers
  1. def convertType(s):
  2.         for func in (int, float, eval):
  3.             try:
  4.                 n = func(s)
  5.                 return n
  6.             except:
  7.                 pass
  8.         return s
Expand|Select|Wrap|Line Numbers
  1. >>> data = ['12.2', 'hello', '7', '[12,24,36,"goodbye"]', '12*12']
  2. >>> for item in data:
  3. ...     print convertType(item)
  4. ...     
  5. 12.2
  6. hello
  7. 7
  8. [12, 24, 36, 'goodbye']
  9. 144
  10. >>> 
Nice touch, throwing in the eval! I really like it!
Nov 2 '07 #5
bvdet
2,851 Expert Mod 2GB
Nice touch, throwing in the eval! I really like it!
I actually use this in almost every script run in SDS/2. We import data from a text file formatted like this:

#Python Script Default File
access_hole_height=1.25
access_hole_length=1.25
access_hole_radius=0.5
flange_setback_bott=6.5
flange_setback_top=6.5
flush_lower_left=0.0
flush_lower_right=0.0
flush_upper_left=0.5
flush_upper_right=0.5
prep_angle=45.0
prep_list=['Top Left', 'Bottom Left']
print_doc=No
Here's the actual code used:
Expand|Select|Wrap|Line Numbers
  1. def fdim(s):
  2.     ss = s.split('/')
  3.     return float(ss[0])/float(ss[1])
  4.  
  5. def convertType(s):
  6.         for func in (int, float, fdim, eval):
  7.             try:
  8.                 n = func(s)
  9.                 return n
  10.             except:
  11.                 pass
  12.         return s
  13.  
  14. def import_data(file_name):
  15.     patt = r'.+=.+'
  16.     try:
  17.         data = [item.strip().split('=') for item in re.findall(patt, open(file_name).read()) if not item.startswith('#')]
  18.         return dict(zip([j[0].strip() for j in data], [convertType(i[1].strip()) for i in data]))
  19.     except:
  20.         Warning("User default file import error. Reverting to auto or initial defaults...")
  21.         return None
It returns a dictionary with the values of the correct types. The 'eval()' was necessary to convert saved lists, and the 'fdim()' to convert fractions that were saved to disk as strings.
Nov 2 '07 #6

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

2 posts views Thread by Brian | last post: by
2 posts views Thread by Stormkid | last post: by
8 posts views Thread by vcardillo | last post: by
12 posts views Thread by Sam Collett | last post: by
8 posts views Thread by Mike S. Nowostawsky | last post: by
104 posts views Thread by Leszek | last post: by
7 posts views Thread by Jim Carlock | last post: by
17 posts views Thread by =?Utf-8?B?U2hhcm9u?= | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.