Tim and Ben, Thanks for your input, I am working on it now and will come back when I have questions. Any comment on using pyparsing VS regex
Vincent Davis 720-301-3003 On Thu, Dec 25, 2014 at 7:18 PM, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > Vincent Davis <vinc...@vincentdavis.net> writes: > > > I don't want to parse the page, I what a function that given a VIN > > (frame or engine number) returns the year the bike was made. > > So the page has a collection of tables which the reader can use to > manually look up the VIN, or elements of the VIN, to determine the range > of dates of manufacture. > > Your problem is to come up with a suitable data structure to map VIN to > date range. > > The core of this, in Python, is going to be a ‘dict’ instance. You need > to represent “part of a VIN” as the key, and “range of dates” as the > resulting value. > > > For the value, a “date range” is expressed simply by a 2-item tuple of > dates:: > > import datetime > date_range = (datetime.date(1979, 8, 1), datetime.date(1980, 7, 31)) > > If you want something a little more expressive, make a namedtuple to > name the items in the tuple:: > > import datetime > import collections > > DateRange = collections.namedtuple('DateRange', ['begin', 'end']) > > date_range = DateRange( > begin=datetime.date(1979, 8, 1), > end=datetime.date(1980, 7, 31)) > > > Given that a VIN is (despite the number) not a number, but instead a > string of characters, I would recommend using “string prefix” as the > key. > > To match a VIN, iterate through the keys and attempt a match against the > prefix; if a match is found, the date range is obtained simply by > getting the corresponding value from the dictionary. > > However, you have some entries in those tables with “prefix ranges”. You > can extrapolate from what I wrote here to come up with a method for > matching within a range of prefixes. > > > I *strongly* recommend keeping the data set small until you come up with > a working means to store and look up the information. While you do so, > feel free to post (small!) code examples here to show your working. > > Good hunting. > > -- > \ “The Vatican is not a state.… a state must have territory. This | > `\ is a palace with gardens, about as big as an average golf | > _o__) course.” —Geoffrey Robertson, 2010-09-18 | > Ben Finney > > -- > https://mail.python.org/mailman/listinfo/python-list >
-- https://mail.python.org/mailman/listinfo/python-list