XPath属性筛选报Invalid predicate,Pandas读取XML实验数据遇阻
解决Pandas读取XML时XPath谓词无效的问题
问题原因
报错XPathEvalError: Invalid predicate的核心原因是:XPath表达式中属性值Experiment#1作为字符串未被引号包裹。XPath语法规定,字符串类型的属性筛选值必须用单引号或双引号括起来,否则解析器会将Experiment#1误判为节点或非法表达式,进而触发语法错误。
修正后的代码
将XPath中[@sectionName=Experiment#1]修改为[@sectionName='Experiment#1'](用单引号包裹字符串值),即可正常执行:
import pandas as pa a = pa.read_xml( path_or_buffer=filepath, xpath="//doc:experimentSection[@sectionName='Experiment#1']/doc:plateSection/doc:microplateData/doc:wave[@waveID=1]/doc:well[@wellID]/doc:oneDataSet", namespaces={"doc": "http://moleculardevices.com/microplateML"} )
效果验证
执行上述代码后,会正确筛选出指定实验(sectionName为Experiment#1)和指定波长(waveID=1)的数据,生成包含rawData和timeData列的目标DataFrame。
内容的提问来源于stack exchange,提问作者Maurice M.
相关产品推荐
相关产品推荐

