#!/usr/bin/env python # -*- coding: iso8859-1 -*- # # nut by Erik Waling # # get the db (maxibas) at http://www.slv.se import locale import string import sys import re class NutritionDB: def __init__(self, filename='ldb93330.xls'): f = open(filename, "r") rawdb = file.readlines(f) f.close() self.__db = [] for line in rawdb: self.__db.append(tuple(line.strip("\t\r\n").split("\t"))) self.__version = str(self.__db.pop(0))[2:-5] self.__heading = self.__db.pop(0) self.__hashtable = {} i = 0 for item in self.__heading: self.__hashtable[item] = i i = i+1 def getDB(self): return self.__db def getDBVersion(self): return self.__version def getDBHead(self): return self.__heading def searchDB(self, regexp, field='Livsmedel'): hits = [] rpattern = re.compile(regexp.lower()) for item in self.__db: if re.match(rpattern, item[self.__hashtable[field]].lower()): hits.append(item) return hits if __name__ == '__main__': locale.setlocale(0, "") # LC_CTYPE if len(sys.argv) != 2: print 'Usage: %s ' %(sys.argv[0]) sys.exit(-1) ndb = NutritionDB() hits = ndb.searchDB('.*' + sys.argv[1] + '.*') if len(hits) == 0: print 'No hits!' sys.exit(0) print 'Livsmedel (per 100g)'.ljust(52) + 'Kcal'.ljust(7) + 'Prot'.ljust(7) + 'Kolh'.ljust(7) + 'Fett'.ljust(7) for h in hits: for i in [1, 4, 7, 9, 8]: if i == 1: print h[i].ljust(52)[:51], else: print h[i].ljust(6), print