[Tutor] if you're interested in the code thus far...
Alan Gauld
alan.gauld at btinternet.com
Sun Oct 26 10:10:34 CET 2014
On 25/10/14 23:46, Clayton Kirkwood wrote:
> __author__ = 'SYSTEM'
You are still setting __author__ which is a bit suspect.
Leave double underscores to python.
> import string
You are still importing string twice, and you don't use it anywhere
that I can see.
> #Pricing Dividends
>
> raw_table = ('''
I assume this will eventually come from a file?
You are not really going to store it with your code?
If you are then using a string is pointless and causing
you lots of extra work.
> a: Ask y: Dividend Yield
> b: Bid d: Dividend per Share
> b2: Ask (Realtime) r1: Dividend Pay Date
> b3: Bid (Realtime) q: Ex-Dividend Date
...
> s7: Short Ratio
> ''')
You don't need parens as well as triple quotes.
The quotes alone are sufficient.
> import re, string
second string import... And you don't seem to be using re either?
> col_position, code, description = 0, [], []
> key_name = raw_table.replace('\t','\n')
I assume this is because you don't control the file format? Since
otherwise you would just use newlines in the file, right?
>
> for each_line in key_name.splitlines():
> if ':' in each_line:
> c, d = each_line.split(':')
> code.append(c)
> description.append(d.strip())
> print( col_position, code[col_position], description[col_position])
> col_position += 1
You could use enumerate in the for loop and that would set the
col_position value for you:
for col_position,each_line in enumerate(key_name.splitlines()):
> output_line_len = 120
> current_output_pos = index = 0
> description_output_string = code_output_string = ''
> for description_position, code_position in zip(description, code):
Why not just put the codes and descriptions in tuples when you read them
in the loop above? Why use zip? In other words where you do
> c, d = each_line.split(':')
> code.append(c)
> description.append(d.strip())
Why not just join the pair there:
> c, d = each_line.split(':')
values.append((c,d))
or even just
> values.append(each_line.split(':'))
It seems as if you are splitting the values into two lists only
to zip those lists together again in the next loop?
> description_position_len = len(description_position)
> current_output_pos += description_position_len
>
> if current_output_pos >= output_line_len:
> print(description_output_string)
> print(code_output_string)
> code_output_string=description_output_string=''
> current_output_pos=-1 #start new line
>
> description_output_string += '{:^}|'.format(description_position)
>
> code_output_string+='{0:^{1}}|'.format(code_position,
> description_position_len)
>
> current_output_pos+=1 #takes care of '|' at end of string
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
More information about the Tutor
mailing list