Economic Indicators Page
# -*- coding: utf-8 -*-
from glob import *
def between(line,  before,  after):
       f = line.find(before)
       if f >= 0:
           s = line[f+len(before): ]
           return s[:s.find(after)]
       else:
           return ""
   
def linefeeder(s=None):
    if s:
       lines = s.plit("\n")
    for line in lines:
        yield line
def mdy(d):
    """
    Reformats date d to form month.day.year 
    """
    day,  month, year = d.split()
    amonths = ["January", "February",'March',  "April",  "May",  "June",  "July", "August", 
                        "September",  "October",  "November",  "December"]
    return "%02d.%02d.%s" % (amonths.index(month)+1,  int(day),  year)
   
state = 0
out = []
for fname  in glob("*bsp*.html"):
    bspdata = open(fname).read()
    s = ""
    state = 0
    for line in bspdata.split("\n"):
        if "" in line:
            date = between (line, "
", "
")
            if date:
                s+="
" + mdy(date) + " "
                state = 1
            continue  
        if state == 1:
            if  "keystat/day99.htm" in line:
              state = 2
            continue
        if state == 2:
            #dollar rate.
            dollarrate = between(line,  "right\">", "" ) 
            if dollarrate:
                s+="" + dollarrate +" "
                state= 3
            continue
        if state == 3:
            if "bspratesdds" in line:
                state = 4
            continue
        if state == 4:
            reporate = between(line,  '', '
')
            if reporate:
                s+=""+ reporate + " "
                state = 5
            continue
        if state == 5:
            if "Reverse Repo Rate" in line:
                state = 6
            continue
        if state == 6:
            revreporate= between(line,  "right\">",  "")
            if revreporate:
                s+=""+ revreporate+" " 
                state = 7
            continue
        if state == 7:
            if "Inflation Rate" in line:
                state = 8
            continue
        if state == 8:
            infrate = between(line, "right\">",  "")
            if infrate:
                s+=""+ infrate+ " "
                state = 9
            continue
        if state == 9:
            if "NEER" in line:
                state = 10
            continue
        if state == 10:
            NEER = between(line,  "right\">",  "").strip()
            if NEER: 
                s+=""+  NEER+  " "
                state = 11
            continue
        if state == 11:
            if "91-day" in line:
                state = 12
            continue
        if state == 12:
            d91 = between(line,  "right\">",  "")
            if d91:
                s+=""+  d91+ " "
                state = 13
            continue
        if state == 13:
            if "Gold" in line:
                state = 14
            continue
        if state == 14:
            gold = between(line,  "right\">",  "")
            if gold:
                s+=""+  gold+" " 
                state = 15
            continue
        if state == 15:
            if "Silver" in line:
                state = 16
            continue
        if state == 16:
            silver = between(line, "right\">",  "")
            if silver:
                s+= ""+ silver +" We plan to make the code cleaner by using the linefeeder function, but this can wait as we have more important things to do.
 
 
No comments:
Post a Comment