From: <go...@pu...> - 2007-05-17 20:45:01
|
> Below, I have a sample of code that reads a BibTeX file, and breaks the > data into fields and values. Is there an easy method that is built into > pybliographer to parse the text of names? I'd like each person's first > and last name. (And does this code look on track, or am I doing this the > hard way?) I might be missing something, but why aren't you using the BibTeX.Reader class directly? BTW, it has some heuristics to split author names. > > Thanks for any pointers, > > -Doug > > def parseBibtex(udir, filename, fields): > """ Pass in directory, filename, and list of valid fields. """ > from Pyblio.Parsers.Syntax.BibTeX.Parser import read, Comment, > Record, Join, Block, ATComment > from Pyblio.Exceptions import ParserError > fd =3D open(udir + "/" + filename, "r") > try: > records =3D read(fd) > except ParserError, err: > print "ERROR: %s at line %d: %s" % (file, err[0], err[1]) > return > for rec in records: > data =3D [] > if type(rec) =3D=3D Comment: > pass # just a comment > elif type(rec) =3D=3D ATComment: > pass > elif type(rec) =3D=3D Record: > for pair in rec.fields: > field, value =3D pair > field =3D field.strip().lower() > if type(value) =3D=3D Join: > for part in value: > if type(part) =3D=3D Block: > if field not in fields: > print p("Unknown field: %s" % field) > continue > if field =3D=3D "author" or field =3D=3D "ed= itor": > # FIX: break value into names > else: # other than author > data.append((field, part.flat())) > else: # other than block > data.append((field, part.flat())) > else: # other than join > data.append((field, value.flat())) > else: > print p("Unknown record type: %s" % type(rec)) > # do something with data > # return something > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Pybliographer-general mailing list > Pyb...@li... > https://lists.sourceforge.net/lists/listinfo/pybliographer-general > > --=20 Fr=E9d=E9ric |