Форум сайта python.su
0
Добрый всем день!
У меня вопрос на счет считывания excel файла. Точнее я не знаю в каком направлении двигаться.
Вот пример кусочек кода:
import matplotlib.pyplot as plt from pylab import * import cmath def sf(prompt): """ """ error_message = "Value must be integer and greater or equal than zero" while True: val = raw_input(prompt) try: val = float(val) except ValueError: print(error_message) continue if val <= 0: print(error_message) continue return val def petrogen_elements(): """Input and calculations the main parameters for pertogen elements""" print "Please enter Petrogen elements: \r" SiO2 = sf("SiO2: ") Al2O3= sf("Al2O3: ") Na2O = sf("Na2O: ") K2O = sf("K2O: ") petro = [SiO2,TiO2,Al2O3,] Sum = sum(petro) Alcal = Na2O + K2O TypeA lcal= Na2O / K2O Ka= (Na2O + K2O)/ Al2O3 print '-'*20, "\r Alcal: %s \r TypeAlcal: %s \ \r Ka: %s \r" % (Alcal, TypeAlcal,Ka,) petrogen_elements()
Отредактировано Protoss (Дек. 10, 2012 17:42:24)
Офлайн
0
Таблица не получилось, но имеется ввиду как в excel. 1-ая строка 1-ый столбец Это Обр1. далее 1 строка 2 столбец SiO2 итп под ними их значения
Офлайн
36
если
Protoss, то зачем повторять через строку наименования элементов? Что такое ОбрN? Оно у Вас ни где не используется. Таким образом Ваши входные данные можно представить в следующем виде:
значения эти идут в строго определенном порядке!
SiO2 Al2O3 Na2O K2O 32 12 0.21 0.1 45 8 7.54 5
import csv def parse_file(fname): with open(fname, "rt", encoding="utf-8") as f: for _set in csv.DictReader(f, delimiter=" "): _set = {k: float(v) for k, v in _set.items()} petrogen_elements(_set)
from collections import namedtuple SET = namedtuple("SET", "SiO2, Al2O3, Na2O, K2O") def parse_file(fname): with open(fname, "rt", encoding="utf-8") as f: next(f) # пропускаем строку заголовков, чтобы не менять формат файла for line in f: _set = SET(*map(float, line.split())) petrogen_elements(_set)
def petrogen_elements(_set): Sum = sum((_set["SiO2"], _set["TiO2"], _set["Al2O3"])) Alcal = _set["Na2O"] + _set["K2O"] TypeAlcal= _set["Na2O"] / _set["K2O"] Ka= (_set["Na2O"] + _set["K2O"]) / _set["Al2O3"] print("{}\r Alcal: {}\r TypeAlcal: {}\r Ka: {}".format('-'*20, Alcal, TypeAlcal, Ka))
import xlrd3 as xlrd from collections import namedtuple SET = namedtuple("SET", "SiO2, Al2O3, Na2O, K2O") def parse_file(fname): ws = xlrd.open_workbook(fname).sheets()[0] for i in range(1, ws.nrows): # пропускаем строку заголовков _set = SET(*ws.row_values(i, end_colx=ws.ncols)) petrogen_elements(_set)
Офлайн
0
Обр это просто стринговое название объекта.
Спасибо большое за помощь.
Офлайн