Mi è capitato un problema strano, ho dei file html nei quali è contenuta una tabella di orari, ordinazioni, prezzi ecc.
Dovrei calcolare la durata degli ordini, cioè la differenza temporale tra orari di celle con lo stesso numero identificativo (in valore assoluto).
questo lo script in python per farlo
Codice: Seleziona tutto
import re
import urllib.request
page = urllib.request.urlopen('file:///C:/Users/Matteo/Downloads/BigBang_M15_EurUsd_2015.htm')
htm = page.read().decode("utf8")
patternd = r"class=msdate>(................)"
date = re.findall(patternd, htm)
import datetime
dtdate = []
for i in range(0 , len(date)):
dtdate.append(datetime.datetime.strptime(date[i], '%Y.%m.%d %H:%M'))
patterno = r"([0-9]|[0-9][0-9]|[0-9][0-9][0-9])</td><td class=mspt>1.00<"
order = re.findall(patterno, htm)
norder = []
for i in range(0 , len(order)):
norder.append(int(order[i]))
lag = []
for i in range(0 , len(norder)):
for j in range(0 , len(norder)):
if j > i and norder[i] == norder[j]:
lag.append(dtdate[j]-dtdate[i])
progress=[]
for i in range(0 , int(len(norder)/2)):
progress.append(i+1)
posizioni = []
posizioni.append(lag)
posizioni.append(progress)
durate= [list(i) for i in zip(*posizioni)]
def getkey(item):
return item[0]
outp=sorted(durate, key=getkey)
ddu=[]
for i in range(0 , int(len(norder)/2)):
ddu.append(outp[i][0])
ood=[]
for i in range(0 , int(len(norder)/2)):
ood.append(outp[i][1])
esci = {'durate':ddu, 'ordini':ood}
import itertools as IT
matrix = zip(*[value if isinstance(value, list) else IT.repeat(value) for key,value in esci.items()])
print(''.join(['{:25}'.format(key) for key in esci.keys()]))
for row in matrix:
print(''.join(['{:25}'.format(str(item)) for item in row]))