f = open('test.xml', 'w')
f.write(etree.tostring(root))
換到在 python3 的時候,就會發生:
f.write(etree.tostring(root))
TypeError: write() argument must be str, not bytes
原因是 lxml 回傳的是 python3 的新型態 bytes,其實就是以前的 str 型態。
要解決有兩個方法。
一個是 tostring 成 unicode,像這樣
f = open('test.xml', 'w')
f.write(etree.tostring(root,encoding='unicode'))
另一個方法是
f = open('test.xml', 'wb')
f.write(etree.tostring(root))
以我們有中文需求的話,我比較喜歡第一種。
沒有留言:
張貼留言