table from csv file

2010-01-08 Thread marlowe
I am trying to create a table in python from a csv file where I input
which columns I would like to see, and the table only shows those
columns. I have attached an example of the csv file i am using, and
some of the code I have written. I am having trouble converting
variables between lists, dictionaries and tuples. Is there a name for
what I am attempting to do? any help to get me on the right track with
this is appreciated.

test.csv
DateOpen HighLowClose   Volume  Adj Close
12/14/09110.01  110.7   109.5   110.24  16316000110.24
12/11/09110.6   110.82  108.72  109.32  28983100109.32
12/10/09110.66  111.03  110.04  110.82  20491700110.82
12/9/09 111.6   112.48  109.38  110.84  37104900110.84
12/8/09 112.76  113.06  110.21  110.95  37630800110.95
12/7/09 111.51  114.22  111.44  113.11  42480500113.11
12/4/09 117.15  117.26  112.41  113.75  79182600113.75
12/3/09 118.57  119.54  118.03  118.7   28802100118.7
12/2/09 118.8   119.27  118.3   119.18  30994600119.18
12/1/09 117.3   117.93  116.78  117.38  27641000117.38
11/30/09114.48  115.89  114.27  115.64  16402300115.64
11/27/09113.08  115.81  113.02  115.06  21234400115.06
11/25/09115.69  116.88  115.53  116.62  24553300116.62
11/24/09114.73  114.81  113.97  114.73  22599700114.73
11/23/09114.67  115.12  113.99  114.29  24422700114.29
11/20/09111.74  112.94  111.54  112.94  17302500112.94
11/19/09111.85  112.4   110.76  112.3   21239800112.3
11/18/09112.69  113.09  111.8   112.25  22320600112.25
11/17/09111.09  111.99  110.9   111.97  19732900111.97
11/16/09110.7   112.16  110.65  111.63  25002300111.63
11/13/09108.32  109.8   108.14  109.74  17246000109.74
11/12/09109.16  109.56  108.12  108.21  17848300108.21
11/11/09109.49  109.71  109 109.6   17654100109.6
11/10/09108.03  108.78  107.7   108.39  15973300108.39
11/9/09 108.69  108.75  107.91  108.19  18444800108.19
11/6/09 107.38  108.04  107.06  107.43  14789000107.43
11/5/09 106.81  107.2   106.6   106.98  10189000106.98
11/4/09 107.11  107.68  106.43  107.1   27125500107.1

table.py;

import csv

(D, O, H, L, C, V, A) = (11, 'open', 'high', 'low', 'close', 66, 77)

d = {'high':H, 'low':L, 'close':C, 'open':O}

spacing = '%-*s'

w=raw_input('what do you want to see? (use commas to seperate values)
')
y=w.lower()
x=y.replace(' ','')
print x

p = x.split(',')#this takes string, converts to
list
print p
num = len(p)
format = num*spacing
width = 12*num
wi = 12
secwidth = width - wi


bb = []
i=0
while i < num:  #creates new list with variables
ll = d[p[i]]
bb.insert(i,ll)
i+=1
print bb
i = 0
while i < num:
bb.insert(i*2, 12)   #this works on list
i+=1
print bb



i = 0
while i < num:
p.insert(i*2, 12)   #this works on list
i+=1

q = tuple (p)   #takes list, converts to tuple


reader = csv.reader(open('/prog/test.csv', "rb"))



rownum = 0
for row in reader:
if rownum == 0:
print '=' * width
print format % (q)
print '-' * width
print ''

else:
D, O, H, L, C, V, A = row [:7]
o = tuple (bb)
print format % (o)

rownum += 1
-- 
http://mail.python.org/mailman/listinfo/python-list


syntax

2010-01-18 Thread marlowe
I wrote this program, but i have a feeling like there might be a more
practical way of writing it. Can someone give me an idea of how to
simplify this? Here is an example of the csv file i am using. This
program calculates the exponential moving average of the 20 day range.

USOtable.csv (full table found at 
http://ichart.finance.yahoo.com/table.csv?s=USO)

Date,Open,High,Low,Close,Volume,Adj Close
2010-01-15,38.97,39.02,38.28,38.40,12615300,38.40
2010-01-14,39.30,39.44,38.88,39.06,8575900,39.06
2010-01-13,39.40,39.71,38.63,39.21,15502700,39.21
2010-01-12,40.07,40.36,39.53,39.63,11960100,39.63
2010-01-11,41.09,41.19,40.46,40.54,8902200,40.54
2010-01-08,40.63,41.17,40.45,40.93,9393500,40.93
2010-01-07,40.87,41.08,40.68,40.72,10012000,40.72
2010-01-06,40.32,41.19,39.89,40.97,19789800,40.97
2010-01-05,40.25,40.45,39.93,40.41,10450200,40.41


test.py

import csv


reader = open('/prog/USOtable.csv','rb')
data = [row for row in csv.reader(reader)]

Nvals=
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]


H=float(data[40][2])+float(data[41][2])+float(data[42][2])+float(data
[43][2])\
+float(data[44][2])+float(data[45][2])+float(data[46][2])+float(data
[47][2])\
+float(data[48][2])+float(data[49][2])+float(data[50][2])+float(data
[51][2])\
+float(data[52][2])+float(data[53][2])+float(data[54][2])+float(data
[55][2])\
+float(data[56][2])+float(data[57][2])+float(data[58][2])+float(data
[59][2])\
+float(data[60][2])

L=float(data[40][3])+float(data[41][3])+float(data[42][3])+float(data
[43][3])\
+float(data[44][3])+float(data[45][3])+float(data[46][3])+float(data
[47][3])\
+float(data[48][3])+float(data[49][3])+float(data[50][3])+float(data
[51][3])\
+float(data[52][3])+float(data[53][3])+float(data[54][3])+float(data
[55][3])\
+float(data[56][3])+float(data[57][3])+float(data[58][3])+float(data
[59][3])\
+float(data[60][3])


Nvals[39]=(H-L)/2


i=1
while i <=38:
high=float(data[39-i][2])
low=float(data[39-i][3])
TR=high-low
Nvals[39-i]=(19*Nvals[40-i]+TR)/20
i+=1

for value in Nvals:
print value
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: syntax

2010-01-18 Thread marlowe
oh, and i need to make those a new column that is added to the csv
file.
Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list