2012-12-02 11 views
12

मुझे पायथन 2.6.1 में पथ विभाजक त्रुटि मिल रही है। मुझे इस मुद्दे को पायथन 2.7.2 संस्करण के साथ नहीं मिला है, लेकिन दुर्भाग्य से मुझे इसकी आवश्यकता केवल 2.6.1 में है। क्या इसे हासिल करने का कोई और तरीका है? :(पायथन 2.6.1: अपेक्षित पथ विभाजक ([)

मेरी कोड: -

import xml.etree.ElementTree as ET #version 1.2.6 
import sys 

class usersDetail(object): 

    def __init__(self, users=None): 
     self.doc = ET.parse("test.xml") 
     self.root = self.doc.getroot() 

    def final_xml(self,username): 
     r = self.root.find("user[@username='user1']") #not working in 2.6.1 :(
     self.root.remove(r) 
     print r 
     tree = ET.ElementTree(self.root) 
     tree.write("msl.xml") 

if __name__ == '__main__': 
    parser = usersDetail() 
    parser.final_xml("user1") 

test.xml है: -

<?xml version="1.0"?> 
<users> 
<user afp="yes" cifs="yes" username="user1" volume="vol" webdev="yes" /></user> 
</users> 

इस क्या करेंगे यह एक्सएमएल निकाल देंगे है केवल यदि उपयोगकर्ता नाम = उपयोगकर्ता नाम के लिए अग्रिम धन्यवाद। आपका मूल्यवान समय

उत्तर

16

आप एक XPath अभिव्यक्ति का उपयोग कर रहे हैं, जो कि ElementTree संस्करण द्वारा समर्थित नहीं है Python 2.6 में। आपकोके बाद मैन्युअल रूप से विशेषता के लिए फ़िल्टर करना होगा:

def final_xml(self,username): 
    users = self.root.findall("user") 
    for user in users: 
     if user.attrib.get('username') == 'user1': 
      break 
    else: 
     raise ValueError('No such user') 

    # `user` is now set to the correct element 
    self.root.remove(user) 
    print user 
    tree = ET.ElementTree(self.root) 
    tree.write("msl.xml") 
+1

हाँ, आप सही हैं। –

संबंधित मुद्दे