【问题标题】:Extracting value from XML value only if available仅在可用时从 XML 值中提取值
【发布时间】:2019-07-24 03:33:58
【问题描述】:

这里是新手,试图从 XML 文件中的标签中提取值:docid、year、citedWork。然而,并不是所有的条目都包含被引用的工作标签。

enter image description here

目前,我收到了:

AttributeError: 'NoneType' 对象没有属性 'text'

关于如何将此条件合并到脚本中的任何建议?谢谢!

for element in root.findall(".//return/references"):
list_nodes=[]

if count == 0:
    doc_id= element.find('docid').tag
    result.append(doc_id)

    year= element.find('year').tag
    result.append(year)

    cit_title= element.find('citedTitle').tag
    result.append(cit_title)

    cit_work= element.find('citedWork').tag
    result.append(cit_work)

    CSV_writer.writerow(result)
    count = +1

doc_id= element.find('docid').text
list_nodes.append(doc_id)

year= element.find('year').text
list_nodes.append(year)

cit_title= element.find('citedTitle').text
list_nodes.append(cit_title)

cit_work= element.find('citedWork').text
list_nodes.append(cit_work)    


CSV_writer.writerow(list_nodes)

xml_csv.close()

【问题讨论】:

标签: python


【解决方案1】:
cit_work= element.find('citedWork').tag
cit_work= element.find('citedWork').text

对于这些情况,如果您预计“citedWork”可能不存在,您可以在尝试访问其任何属性之前检查find 的返回值是否不是None

cit_work_elem = element.find('citedWork')
if cit_work_elem:
    cit_work = cit_work_elem.text

【讨论】:

    【解决方案2】:

    试试下面的代码,

    cit_work= element.find('citedWork').text
    except:
       cit_work= None
    

    如果 xml 文件中不存在,则为无。试试这个!

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多