Python ';没有这样的孩子:pyval“;错误
我正在阅读一本书(Python for Data Analysis),其中包含以下代码。运行循环时,我收到一个错误“no-soke-child:pyval”。我是否有语法错误或类似的问题Python ';没有这样的孩子:pyval“;错误,python,python-2.7,xml-parsing,lxml,Python,Python 2.7,Xml Parsing,Lxml,我正在阅读一本书(Python for Data Analysis),其中包含以下代码。运行循环时,我收到一个错误“no-soke-child:pyval”。我是否有语法错误或类似的问题 from lxml import objectify path = 'Performance_MNR.xml' parsed = objectify.parse(open(path)) root = parsed.getroot() data = [] skip_fields = ['PARENT_SEQ',
from lxml import objectify
path = 'Performance_MNR.xml'
parsed = objectify.parse(open(path))
root = parsed.getroot()
data = []
skip_fields = ['PARENT_SEQ', 'INDICATOR_SEQ', 'DESIRED_CHANGE', 'DECIMAL_PLACES']
for elt in root.INDICATOR:
el_data = {}
for child in elt.getchildren():
if child.tag in skip_fields:
continue
el_data[child.tag] = child.pyval
data.append(el_data)
回溯如下:
AttributeError Traceback (most recent call last)
<ipython-input-17-88720283f598> in <module>()
4 if child.tag in skip_fields:
5 continue
----> 6 el_data[child.tag] = child.pyval
7 data.append(el_data)
8
lxml.objectify.pyx in lxml.objectify.ObjectifiedElement.__getattr__ (src/lxml/lxml.objectify.c:3497)()
lxml.objectify.pyx in lxml.objectify._lookupChildOrRaise (src/lxml/lxml.objectify.c:5947)()
AttributeError: no such child: pyval
AttributeError回溯(最近一次调用)
在()
4如果跳过字段中的child.tag:
5继续
---->6 el_数据[child.tag]=child.pyval
7.附加数据(el_数据)
8.
lxml.objectify.ObjectifiedElement.中的lxml.objectify.pyx.\uu getattr\uuuuu(src/lxml/lxml.objectify.c:3497)()
lxml.objectify.\u lookupChildOrRaise中的lxml.objectify.pyx(src/lxml/lxml.objectify.c:5947)()
AttributeError:没有这样的子项:pyval
试试这个:
for elt in root:
el_data = {}
for child in elt.getchildren():
if child.tag in skip_fields:
continue
el_data[child.tag] = child.pyval
data.append(el_data)
尝试将“pyval”更改为“text”,这样就可以了
data=[]
skip_fields=['PARENT_SEQ','INDICATOR_SEQ','DESIRED_CHANGE','DECIMAL_PLACES']
for elt in root.INDICATOR:
el_data={}
for child in elt.getchildren():
if child.tag in skip_fields:
continue
el_data[child.tag]=child.text
data.append(el_data)
我也在读这本书,遇到了同样的问题。这对我有用
skip_fields = ['PARENT_SEQ', 'INDICATOR_SEQ',
'DESIRED_CHANGE', 'DECIMAL_PLACES', 'YEAR']
.pyval尝试返回最合适的python类型,而.text返回本机python字符串 “Python for Data Analysis”一书中的文件可以从 或(生的) 代码(python 3.6) 看起来很好用。列的数据类型可以通过
result.columns.to_series().groupby(result.dtypes).groups
=>{dtype('int64'):索引(['PERIOD\u MONTH','PERIOD\u YEAR',dtype='object'),dtype('O'):索引(['AGENCY\u NAME','CATEGORY','DESCRIPTION','FREQUENCY','INDICATOR\u NAME',
‘指标单位’、‘月度实际’、‘月度目标’、‘年初至今实际’,
“年初至今目标”],
dtype='object')}
用.text替换.pyval同样有效,但数据类型将明显改变
=>{dtype('O'):索引(['AGENCY\u NAME','CATEGORY','DESCRIPTION','FREQUENCY','INDICATOR\u NAME',',
‘指标单位’、‘每月实际’、‘每月目标’、‘期间月’,
“期间/年度”、“本年度实际值”、“本年度目标值”],
dtype='object')}
result.columns.to_series().groupby(result.dtypes).groups