【问题标题】:Replacing None object with a Null when parsing XML with Python and LXML [duplicate]使用 Python 和 LXML 解析 XML 时将 None 对象替换为 Null [重复]
【发布时间】:2012-03-09 16:58:30
【问题描述】:

可能重复:
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 类型时,输出两次。欢迎改进!

【问题讨论】:

  • 学习python。不要试图让 SO 编写你的每一段代码。
  • 另外,很高兴我对您的其他问题的回答不赞成。
  • SO 不是来为你写代码的。
  • 听取你的建议,告诉我你的想法。
  • 习惯上把你的尝试放在你的问题中,并解释为什么你对它不满意。但是,如果您对此感到满意,那就太好了。

标签: python mysql xml parsing lxml


【解决方案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,因为如果lxml 切换到unicode,您的代码会将unicode 的所有实例替换为''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多