我使用 IronPython 2.7 和 ElementTree 。
代码说明:
我得到AX以下的所有计数节点。我将每个节点追加到lyst中。之后我需要lyst
中每个子列表的长度。
这只是一个例子xml。我真正的xml更大更复杂。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<ex>
<top>
<AX>
<count>a</count>
<count>b</count>
<count>c</count>
</AX>
<AX>
<count>a</count>
</AX>
<AX>
<count>a</count>
<count>b</count>
<count>c</count>
<count>d</count>
</AX>
</top>
</ex>
</main>
码
import clr
import sys
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
import xml.etree.ElementTree as ET
uniStr = unicode(open(path, 'r').read())
fixed = uniStr.encode('ascii', 'replace')
fixed.decode('utf-8', 'replace')
tree = ET.ElementTree(ET.fromstring(fixed))
root = tree.getroot()
lyst=[]
count=[]
xpath=".//top//AX"
xpath2=".//count"
count_match = root.findall(xpath)
for elem in count_match:
subelem=elem.iterfind(xpath2)
lyst.append(subelem)
count.append(map(len,lyst))
#count.append([len(x) for x in lyst])
print count
我希望:count[3,1,4]
,但得到此错误:python TypeError: len() of unsized object
。
修改 使用列表理解:count.append([lyst中的x的len(x)))
相同错误:TypeError: len() of unsized object
。
如何计算子列表中的对象?