How do i append characters to a string? actually my entire handler code is class oldHandler(ContentHandler):
def __init__(self): self.fn = 0 self.dn = 0 self.i=[] self.x="" self.y="" self.z="" self.t=0 self.xx='' def startElement(self, name, attrs): if name=='dirname': self.dn=1 if name=='name': self.fn=1 if name=='time': self.t=1 def characters(self,str): if self.dn: self.x=str if self.fn: self.y=str if self.t: self.z=str ss= self.x+'/'+self.y+','+self.z+ '\r \n' self.i.append(ss) def endElement(self, name): if name == 'dirname': self.dn=0 if name=='name': self.fn=0 if name=='time': self.t=0 def endDocument(self): f=open('old.txt', 'w') self.i.sort f.writelines(self.i) f.close so my old.txt now looks like this y+def.txt,200607130417 C:\Documents and Settings\Administrator\Desktop\1\hii wx\abc.txt,200607130415 But i wont the output as C:\Documents and Settings\Administrator\Desktop\1\bye w&y\def.txt,200607130417 C:\Documents and Settings\Administrator\Desktop\1\hii wx\abc.txt,200607130415 Stefan Behnel wrote: > Kirt wrote: > > i have walked a directory and have written the foll xml document. > > one of the folder had "&" character so i replaced it by "&" > > #------------------test1.xml > > <Directory> > > <dirname>C:\Documents and Settings\Administrator\Desktop\1\bye > > w&y </dirname> > > <file> > > <name>def.txt</name> > > <time>200607130417</time> > > </file> > > </Directory> > > <Directory> > > <dirname>C:\Documents and Settings\Administrator\Desktop\1\hii > > wx</dirname> > > <file> > > <name>abc.txt</name> > > <time>200607130415</time> > > </file> > > </Directory > > > > now in my python code i want to parse this doc and print the directory > > name. > > ###----------handler------------filename---handler.py > > from xml.sax.handler import ContentHandler > > class oldHandler(ContentHandler): > > def __init__(self): > > self.dn = 0 > > def startElement(self, name, attrs): > > if name=='dirname': > > self.dn=1 > > > > def characters(self,str): > > if self.dn: > > print str > > > The problem is here. "print" adds a newline. Don't use print, just append the > characters (to a string or list) until the endElement callback is called. > > > > def endElement(self, name): > > if name == 'dirname': > > self.dn=0 > > > > > > #--------------------------------------------------------------------- > > #main code--- fname----art.py > > import sys > > from xml.sax import make_parser > > from handlers import oldHandler > > > > ch = oldHandler() > > saxparser = make_parser() > > > > saxparser.setContentHandler(ch) > > saxparser.parse(sys.argv[1]) > > #----------------------------------------------------------------------------- > > i run the code as: $python art.py test1.xml > > > > i am getting output as: > > > > C:\Documents and Settings\Administrator\Desktop\1\bye w > > & > > y > > C:\Documents and Settings\Administrator\Desktop\1\hii wx > > > > where as i need an output which should look like this. > > C:\Documents and Settings\Administrator\Desktop\1\bye w&y > > > > C:\Documents and Settings\Administrator\Desktop\1\hii wx > > > > Can someone tell me the solution for this. > > -- http://mail.python.org/mailman/listinfo/python-list