And then I asked myself, why not write a short program to parse and search this file? A totally pointless little hack, the way I like them. It's too warm to sleep anyway... and "can you still do it, old man?" says the devil on my shoulder.
CSV file, one line per record: sounds like a Python job, baby.
A little while - and quite a bit of profanity - later...
import codecs
A little while - and quite a bit of profanity - later...
import codecs
def loadRecords(filename, delimiter):
"Load record collection into a dictionary of dictionaries"
records = {}
# The most painful line in this program. F..k you Excel!
reader = codecs.open(filename, 'r', encoding='ISO-8859-1')
key=0
for line in reader:
row=line.split(delimiter)
# Some dates are missing or are not integers. Oops :)
try:
year = int(row[5])
except:
# 1970 is the year Black Sabbath released their 1st album
# How's that for a default date, huh?
year = 1970
records[key] = {'band':row[0], 'album':row[1], 'year':year}
key=key+1
return records
def findRecords(collection, band, startYear=1900, endYear=2013):
"Find records by band and year range"
for key in collection:
current = collection[key]
if (current['band'] == band) & ((current['year']) in range(startYear,endYear)):
print (band, current['album'], current['year'])
myCollection = loadRecords("records.csv",";")
findRecords(myCollection, "ANATHEMA")
findRecords(myCollection, "AMON AMARTH", 2002)
findRecords(myCollection, "OPETH", 2004, 2008)
You want to see the output, huh? All right:
ANATHEMA They die 1992
ANATHEMA We are the bible 1994
AMON AMARTH Fate of norns 2004
AMON AMARTH Twilight of the thunder god 2008
AMON AMARTH Versus the world 2002
OPETH Ghost reveries 2005
OPETH Orchid 2004
No comments:
Post a Comment