#!/usr/bin/env python # $Id: merge.py,v 1.4 2012/10/21 13:23:39 asdrury Exp $ # http://www.perseus.tufts.edu/hopper/text?doc=Perseus:text:1999.04.0017 # Linux: # $ export LANG=en_US.UTF-8 # [perseus 502]$ python --version # Python 3.2.3 # Windows: # > set PYTHONIOENCODING=utf-8 ################################################################################################################################ __author__ = "A. S. Drury" __version__ = "$Revision: 1.4 $" __date__ = "$Date: 2012/10/21 13:23:39 $" ################################################################################################################################ ################################################################################################################################ import sys, re from lxml import etree from optparse import OptionParser ################################################################################################################################ ################################################################################################################################ parser = OptionParser(usage="%prog -a xml -b xml [-h]", version="$Id: merge.py,v 1.4 2012/10/21 13:23:39 asdrury Exp $") parser.add_option("-a", "--afname", dest="afname", type="string", action="store", default="a.xml", help="First XML file. Default=a.xml") parser.add_option("-b", "--bfname", dest="bfname", type="string", action="store", default="b.xml", help="Second XML file. Default=b.xml") (options, args) = parser.parse_args() ################################################################################################################################ ################################################################################################################################ # http://www.python.org/peps/pep-0263.html for details # http://docs.python.org/howto/unicode.html # http://www.joelonsoftware.com/articles/Unicode.html # The rules for translating a Unicode string into a sequence of bytes are called an encoding. #u = "é".encode("utf-8") #u = str("é", errors="strict"); print(u) ################################################################################################################################ #atree = etree.parse(options.afname) #aelements = atree.xpath("//TEI.2/teiHeader/fileDesc/titleStmt/title") #print aelements[0].text latins = {'1':'I', '2':'II', '3':'III', '4':'IV', '5':'V', '6':'VI', '7':'VII', '8':'VIII'} def latinize(n): return latins[str(n)] def normalize(s, tag=None): r = s if s is not None: r = re.sub('\s+',' ',s.strip()) r = re.sub('&','\&',r) else: r = '' if tag is not None and '' != r: r = '<' + str(tag) + '>' + r + '' + str(tag) + '>' return r def get_text(e, tag=None): r = '' if e is not None and e.text is not None and '' != e.text.strip(): r = e.text if e is not None and e.tail is not None and '' != e.tail.strip(): r = r +' '+ e.tail return normalize(r, tag) def p(s): if s is not None and '' != s.strip(): print(s.strip()) def cat(note, s, html=None): t = note.text if note.text is not None else '' t = t + ' ' t = t + normalize(s) t = t.strip() note.text = t return note parser = etree.XMLParser(remove_blank_text=True) bfile = open(options.bfname, encoding="utf-8", mode="rt") #f = codecs.open(options.bfname, mode="r", encoding='utf-8') #for line in f: # print(line)) btree = etree.parse(bfile) belements = btree.xpath("//div1") n = None cap = None liber = None head0 = "
{}" note0 = "