2017-01-05 43 views
0

我有以下塊來編寫xml標記。有時候名稱已在正確的形式(即,它不會錯誤),有時它不是寫入lxml文本時的ValueError

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

我假設你想避免必須爲你想要設置的每個元素編寫類似的代碼。這有嘗試治療症狀而不是原因的氣味,但如果沒有別的,你可以簡單地將其分解成輔助功能:

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)