编写lxml文本时的ValueError

时间:2017-01-05 20:10:06

标签: python xml unicode lxml

我有以下块来编写xml标记。有时名称已经是正确的形式(也就是说,它不会出现错误),有时它不是

if 'Name' in title_data:
    name = etree.SubElement(info, 'Name')
    try:
        name.text = title_data['Name']
    except ValueError:
        name.text = title_data['Name'].decode('utf-8')

有没有办法简化这个?例如,类似于:

name.text = title_data['Name'] if (**something**) else title_data['Name'].decode('utf-8')

1 个答案:

答案 0 :(得分:1)

我假设你想避免为你想要设置的每个元素编写类似的代码。这有尝试治疗症状的气味,而不是原因,但如果没有别的,你可以简单地将其分解为辅助功能:

def assign_text(field, text):
    try:
        field.text = text
    except ValueError:
        field.text = text.decode("utf-8")

# ...
if "Name" in title_data:
    name = etree.SubElement(info, "Name")
    assign_text(name, title_data["Name"] or None)