Norman Khine wrote: > I have this code (http://pastie.org/4575790) which pulls data from a list > and then modifies some of the values such as the 'yield' entry, which has > entries like: > > 21 > 15 > ≤ 1000 > ≤ 20 > 2.2 - 30 > > so that they are cleaned up.
> can the code be improved further? It will make the code a bit longer, but I'd still put the code for every column/key format into a separate function. Here's a sketch: class Skip(Exception): pass def as_is(item): return item def fix_date(item): soup = BeautifulSoup(item) for a in soup.findAll('a'): return ''.join(a.findAll(text=True)) raise Skip def fix_fill(item): if 'Underground' in item: return "green" elif 'Atmospheric' in item: return 'red' raise Skip fixers = [ (0, "id", as_is), (2, "country", as_is), (3, "fill", fix_fill), (4, "date", fix_date), # ... (12, "name", as_is), ] if __name__ == "__main__": INFILE = "table_content.json" OUTFILE = "detonations.json" with open(INFILE) as f: table_content = json.load(f) event_list = [] for event in table_content: event_dict = {} for index, name, fixer in fixers: item = event[index] try: event_dict[name] = fixer(item) except Skip: pass event_list.append(event_dict) event_list.sort(key=operator.itemgetter('id')) with open(OUTFILE, 'w') as f: json.dump(event_list, f) > also, the content has 2,153 items, what will be the correct way to have > this in a separate file and import this within this file to work on it? I think it would be better to store it in a data format. JSON seems the obvious choice. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor