使用Python和LXML解析XML时,用Null替换None对象

时间:2012-03-09 16:58:31

标签: python mysql xml parsing lxml

  

可能重复:
  Parsing blank XML tags with LXML and Python

给出以下XML文件:

<Car>
    <Color>Blue</Color>
    <Make>Chevy</Make>
    <Model/>
</Car>

并使用以下代码:

Car = element.xpath('//Root/Foo/Bar/Car/node()')
parsedCarData = [{field.tag: field.text for field in Car} for action in Car]

如何用空字符串替换None类型的键值,以便我可以将解析后的键值用于MySQL语句。

我的尝试 - 感谢Marcin 使用转折似乎工作

parsedCars = [{field.tag: field.text if isinstance(field.text,str) else '' for field in Cars} for action in Cars]

对于我的情况,它总是被评估为true。但是当输出前一个None类型时输出两次。欢迎改进!

1 个答案:

答案 0 :(得分:1)

根据您的要求,您可能最好过滤is None,但在实践中,我怀疑这会有所作为:

parsedCars = [{field.tag: field.text if field.text is not None else '' for field in Cars} for action in Cars]

你应该使用basestr代替str,因为你的代码会用unicode替换''的所有实例,lxml是否应该切换到unicode。 / p>