Python XML解析 - 使用"不是None"

时间:2015-02-02 09:10:11

标签: python xml parsing

我尝试使用xml.etree.ElementTree解析包含python 2.7.9中的可选字段的XML文档。

当我使用以下循环时:

summary = curTag.find('summary')
if summary is not None: 
    summary = curTag.find('summary').text.encode('utf8')
    summary = summary.replace("'","'||chr(39)||'")
    summary = summary[:4000]

我收到错误 - AttributeError:' NoneType'对象没有属性'编码'

然而,当我使用它时,它可以工作:

summary = curTag.find('summary')
if summary: 
    summary = curTag.find('summary').text.encode('utf8')
    summary = summary.replace("'","'||chr(39)||'")
    summary = summary[:4000]

然而,我收到警告 - FutureWarning:此方法的行为将在未来版本中更改。使用特定的&#len;(elem)'或者' elem不是None'测试而不是。   如果summary.text不是None:

我刚刚从R转移到python,并试图弄清楚为什么会发生这种情况。


添加确切的错误:

Traceback (most recent call last):

文件"",第1行,in     runfile(' D:/XML_Parsev1.0.py' ;, wdir =' D:')

文件" C:\ Python27 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py",第601行,在runfile中     execfile(filename,namespace)

文件" C:\ Python27 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py",第66行,在execfile中     exec(compile(scripttext,filename,' exec'),glob,loc)

文件" D:/XML_Parsev1.0.py",第69行,in     summary = curTag.find(' summary')。text.encode(' utf8')

AttributeError:' NoneType'对象没有属性'编码'

1 个答案:

答案 0 :(得分:1)

您的摘要标记似乎为空,因此curTag.find('summary').text等于None

您无法对None进行编码,因为None不是字符串。

这是一个快速的解决方法:

if summary: 
    summary = (curTag.find('summary').text or '').encode('utf8')

这是有效的,因为如果summary.textNone,那么or语句将返回一个完全可编码的空字符串。