Python XML 解析 - 使用 "is not None"
Python XML parsing - use of "is not None"
我正在尝试使用 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' object has no attribute 'encode'
但是当我使用时它有效:
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 is not None' 测试。
如果 summary.text 不是 None:
我刚从 R 转到 python,我想弄清楚为什么会这样。
添加准确的错误:
Traceback (most recent call last):
文件“”,第 1 行,位于
runfile('D:/XML_Parsev1.0.py', wdir='D:')
文件 "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第 601 行,在运行文件中
execfile(文件名,命名空间)
文件 "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第 66 行,在 execfile 中
exec(编译(脚本文本,文件名,'exec'),glob,loc)
文件 "D:/XML_Parsev1.0.py",第 69 行,在
摘要 = curTag.find('summary').text.encode('utf8')
AttributeError: 'NoneType' 对象没有属性 'encode'
您的摘要标签似乎是空的,因此 curTag.find('summary').text
等于 None
。
您无法对 None
进行编码,因为 None
不是字符串。
这是一个快速解决方法:
if summary:
summary = (curTag.find('summary').text or '').encode('utf8')
这是可行的,因为如果 summary.text
是 None
,那么 or
语句将 return 一个完全可编码的空字符串。
我正在尝试使用 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' object has no attribute 'encode'
但是当我使用时它有效:
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 is not None' 测试。 如果 summary.text 不是 None:
我刚从 R 转到 python,我想弄清楚为什么会这样。
添加准确的错误:
Traceback (most recent call last):
文件“”,第 1 行,位于 runfile('D:/XML_Parsev1.0.py', wdir='D:')
文件 "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第 601 行,在运行文件中 execfile(文件名,命名空间)
文件 "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第 66 行,在 execfile 中 exec(编译(脚本文本,文件名,'exec'),glob,loc)
文件 "D:/XML_Parsev1.0.py",第 69 行,在 摘要 = curTag.find('summary').text.encode('utf8')
AttributeError: 'NoneType' 对象没有属性 'encode'
您的摘要标签似乎是空的,因此 curTag.find('summary').text
等于 None
。
您无法对 None
进行编码,因为 None
不是字符串。
这是一个快速解决方法:
if summary:
summary = (curTag.find('summary').text or '').encode('utf8')
这是可行的,因为如果 summary.text
是 None
,那么 or
语句将 return 一个完全可编码的空字符串。