2012-03-09 75 views
1

可能重复:
Parsing blank XML tags with LXML and Python更换无对象与空与Python解析XML时和LXML

考虑下面的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语句。

我尝试 - 感谢马尔钦 使用turnary似乎工作

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

对于我的情况下,它一直评价为true.However时输出前一个无类型是输出的两倍。欢迎改进!

+2

学习python。不要试图去写所有你的代码。 – Marcin 2012-03-09 17:03:00

+0

另外,很好的工作downvoting我对你的其他问题的答案。 – Marcin 2012-03-09 17:08:34

+0

这是关于同一段代码的第三个问题。 – Marcin 2012-03-09 17:10:35

回答

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。