2016-04-06 26 views
0

Formüllerin dB'de depolandığı python tabanlı bir proje üzerinde çalışıyorum. Komut dosyası, formülü belirli bir sütundan okuyacak ve listede saklanacak. TCP soket sayesinde EgDize python'da değişken değeri nasıl değiştirilir?

formula[0] = "round(float(latitude[:2]) + (float(latitude[2:])/60)" 
formula[1] = "round(float(longitude[:3]) + float(longitude[3:])/60),6)" 
formula[3] = "int(float(speed)*1.852)" 

için değerler ı virgülle ayrılmış değerler bölmek ve listede depolamış kodlayarak

"imei:1234467454545,ac alarm,160302150105,,F,094605.000,A,1301.9905,N,08014.0746,E,0.19,298.01,,0,,,,;" 

gibi geliyor olacak virgülle ayrılmış. "1301.9905 " akışından enlem, "08014.0746" uzunluğudur ve "0.19" hız değeridir.

Formüllerdeki değeri nasıl uygulayabilirim ve bazı değişkenlerde saklayabilirim? Ben bunu gerçekleştirmenin eval kullanmak sonra piton şablon olarak formülü depolayabilir ve bu yöntemi

latitude = "1301.9905" 
latitude = round(float(latitude[:2]) + (float(latitude[2:])/60),6) 
print latitude 
+0

onay heretemplates üzerine, asteval o görevde cevapları birini arayın. Formülleri çok verimli ve güvenli bir şekilde ele alır. –

+0

Soketiniz yeni satırlarla ayrılmış CSV satırları üretiyorsa, bölmeyi işlemek için 'csv' modülünü kullanabilirsiniz. –

cevap

-1

çalıştılar.

from string import Template 

formula = "round((float($latitude) + float($latitude))/60)" 
template = Template(formula) 
out = template.substitute(latitude="1301.995") 
eval(out) 

burada ben işlevi gerçekleştirmek için eval yöntemini kullanıyorum. Daha fazla bilgi için

Özellikle

+0

Bu, * formülü çalıştırmaz. –

+0

'eval'at sonunda –

+0

olacak birçok durumda, 'eval' kötülük olarak kabul edilir. OP, fonksiyon dizgisinin veritabanında saklanacağını söylüyor, bu yüzden başka bazı insanlar tarafından da ulaşılabilir durumdadır, belki de olabileceğinden emin olmadan bir şeyleri değerlendirmek tehlikeli olabilir – FallenAngel

İlgili konular