Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Ciao a tutti,
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
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]))
Ultima modifica di Procopio il mer 9 ago 2017, 17:33, modificato 2 volte in totale.
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]))