2016-05-23 10 views
1
import os, csv, io 

from xml.etree import ElementTree 
file_name = "example.xml" 
full_file = os.path.abspath(os.path.join("xml", file_name)) 
dom = ElementTree.parse(full_file) 
Fruit = dom.findall("Fruit") 

with io.open('test.csv','w', encoding='utf8') as fp: 
    a = csv.writer(fp, delimiter=',') 
    for f in Fruit: 
     Explanation = f.findtext("Explanation") 
     Types = f.findall("Type") 
     for t in Types: 
      Type = t.text 
      a.writerow([Type, Explanation])  

XMLファイルからデータを抽出してCSVファイルに格納しています。私はこのエラーメッセージが以下に表示されています。抽出されたデータに華氏記号が含まれている可能性があります。手動でXMLファイルを修正することなく、これらのUnicodeエラーを取り除く方法はありますか?私はこのエラーメッセージ UnicodeEncodeErrorを取得する私のコードの最後の行のためにXMLファイルを抽出するときにUnicodeエラーが発生する

:「ASCII」コーデックはuの位置1267での「\のXB0」文字をエンコードすることはできません:ない範囲で序(128)

<Fruits> 
<Fruit> 
    <Family>Citrus</Family> 
    <Explanation>They cannot grow at a temperature below 32 °F</Explanation> 
    <Type>Orange</Type> 
    <Type>Lemon</Type> 
    <Type>Lime</Type> 
    <Type>Grapefruit</Type> 
</Fruit> 
</Fruits> 
+0

Python2またはPython3を使用していますか? –

+0

問題を示す1行のサンプルXMLファイルを提供できますか? –

+0

私はPython 2.7を使用しています。私はXMLの例を – Alexander

答えて

0

エラーが発生した場所は書き込みしませんでした。おそらく最後の行です。

with open('test.csv','w') as fp: 
    a = csv.writer(fp, delimiter=',') 
    for f in Fruit: 
     explanation = f.findtext("Explanation") 
     types = f.findall("Type") 
     for t in types: 
      a.writerow([t.text.encode('utf8'), explanation.encode('utf8')]) 
+0

''\ xb0'.decode(' latin1 ')== u'° ''と書いたので、おそらく 'latin1'です。 'utf8'はエラーを投げます。 –

+0

'u '\ xb0''はすでにUnicode文字列です。エラーは、**エンコーディング**ではなく**デコード**です。 – Daniel

+0

はい最後の行です。 – Alexander

関連する問題