Advertisement
fr1sk

klk2015b

Nov 13th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.74 KB | None | 0 0
  1. import re, sys
  2.  
  3. def racunajTempo(x):
  4.     vreme = str(x).split(':')
  5.     sati = float(vreme[0])*60
  6.     minuti = float(vreme[1])
  7.     sekunde = float(vreme[2])/60
  8.     tempo = float(sati+minuti+sekunde)
  9.     return tempo
  10.  
  11. if len(sys.argv)==1:
  12.     exit("nedovoljan broj argumenata")
  13.  
  14. if re.match(r'.*?.html', sys.argv[1], re.I) is None:
  15.     exit("neispravna datoteka")
  16.  
  17. try:
  18.     with open(sys.argv[1], "r") as f:
  19.         input = f.read()
  20.  
  21. except IOError:
  22.     exit("neuspesno otvaranje datoteke")
  23.  
  24. #rang, sratrni broj, prezime i ime, godina, zemlja, vreme za 5, 10, 15,20km, vreme za celu trku
  25. #<TR class=r0><td>1</td><td>3001</td><td>PUHAR ROK</td><td>1992</td><td>SLO</td><td>0:15:09</td><td>0:31:05</td><td>0:47:27</td><td>1:04:01</td><td>1:07:40</td><TD></TD></TR>
  26. regex = re.compile(r'<TR\sclass=r0>'
  27.                     r'\s*<td>\s*(?P<rang>\d+)\s*</td>\s*'
  28.                     r'\s*<td>\s*(?P<startBr>\d+)\s*</td>\s*'
  29.                     r'\s*<td>\s*(?P<ime>\w+\s\w+)\s*</td>\s*'
  30.                     r'\s*<td>\s*(?P<godine>\d+)\s*</td>\s*'
  31.                     r'\s*<td>\s*(?P<zemlja>[A-Z]{3})\s*</td>\s*'
  32.                     r'\s*<td>\s*(?P<km5>\d{1,2}:\d{1,2}:\d{1,2})\s*</td>\s*'
  33.                     r'\s*<td>\s*(?P<km10>\d{1,2}:\d{1,2}:\d{1,2})\s*</td>\s*'
  34.                     r'\s*<td>\s*(?P<km15>\d{1,2}:\d{1,2}:\d{1,2})\s*</td>\s*'
  35.                     r'\s*<td>\s*(?P<km20>\d{1,2}:\d{1,2}:\d{1,2})\s*</td>\s*'
  36.                     r'\s*<td>\s*(?P<celaTrka>\d{1,2}:\d{1,2}:\d{1,2})\s*</td>\s*'
  37.                    r'.*?'
  38.                    r'<TD></TD>'
  39.                    r'</TR>', re.S|re.I)
  40.  
  41. #-p tempo; -c DDD drzava;
  42. katalog = {}
  43. for m in regex.finditer(input):
  44.     #print m.groups()
  45.     katalog[m.group('startBr')] = [m.group('ime'), m.group('godine'), m.group('zemlja'), m.group('rang'), m.group('km5'), m.group('km10'), m.group('km15'), m.group('km20'), m.group('celaTrka'), float(0), float(0), float(0), float(0),float(0)]
  46.  
  47.  
  48. c=o=p=False
  49. for k,v in katalog.items():
  50.     v[9] = round(racunajTempo(v[4]) / 5,3)
  51.     v[10] = round(racunajTempo(v[5]) / 10, 3)
  52.     v[11] = round(racunajTempo(v[6]) / 15, 3)
  53.     v[12] = round(racunajTempo(v[7]) / 20, )
  54.     v[13] = round(racunajTempo(v[8]) / 21, 3)
  55.  
  56. #print katalog
  57.  
  58.  
  59. if len(sys.argv)>=3:
  60.     if sys.argv[2]=='-c':
  61.         c = True
  62.     if sys.argv[2]=='-o':
  63.         o = True
  64.     if sys.argv[2]=='-p':
  65.         p = True
  66.  
  67.  
  68. for k,v in katalog.items():
  69.     if c:
  70.         if v[2]==sys.argv[3]:
  71.             print k,v
  72.     if o:
  73.         godine = 2015 - int(v[1])
  74.         if godine>int(sys.argv[3]) and godine<int(sys.argv[4]):
  75.             print k,v
  76.     if p:
  77.         if v[13]<float(sys.argv[3]):
  78.             print k,v
  79.  
  80.  
  81. if c is False and o is False and p is False:
  82.     print katalog
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement