[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