Re: Parsing of Names
"Frédéric Gobry" <[email protected]> Thu, 17 May 2007 21:46:23 +0100
| Newsgroups | gmane.comp.gnome.apps.pybliographer |
|---|---|
| Message-ID | <[email protected]> |
2007/5/17, Fr=E9d=E9ric Gobry <[email protected]>: > > 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. Oh, and if you did not use it because I forgot to properly document it, feel free to say so :) > > > > > 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 "= editor": > > # 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 > > Pybliographer-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > > https://lists.sourceforge.net/lists/listinfo/pybliographer-general > > > > > > > -- > Fr=E9d=E9ric > -- = Fr=E9d=E9ric ------------------------------------------------------------------------- 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/