2017-01-18 19 views
0

2つのXMLファイルを比較してCSVに出力する小さなアプリケーションを作成しています。私はCSVをメモ帳++で開くとうまく見えますが(UTF-8のエンコードを示していますが、MS Excelで開くときに奇妙な文字が表示されます)Pythonでcsvにunicodeを書き込み、MS Excelで開く

私はxml.etree.ElementTreeを使ってXMLを解析しています。。。コードを保存するファイルの違いは、私は他の類似の質問からの提案のすべての種類を試してみたが、何も動いていないようにみえ二つのリストに格納されている

ファイルはここにある:メモ帳で

def saveresults(): 
filesave = tkFileDialog.asksaveasfilename(initialdir=filenewdir, title="Save to CSV", 
             defaultextension=".csv", filetypes=[("CSV (Comma delimited)", ".csv")]) 
if filesave is not None: 
    with open(filesave, 'wb') as fp: 
     writef = unicodecsv.writer(fp, dialect="excel-tab", encoding="utf-8") 
     writef.writerow(("Trigger", "Variable", "Old label", "Old columns", "Old precode", "Old precode text", 
         "New label", "New columns", "New precode", "New precode text")) 

     for x, newvalue in enumerate(newvalues): 
      writef.writerow((newvalue[0], newvalue[1], oldvalues[x][2], oldvalues[x][3], oldvalues[x][4], 
          oldvalues[x][5], newvalue[2], newvalue[3], newvalue[4], newvalue[5])) 
     fp.close() 
     tkMessageBox.showinfo(title="Message", message="Done!") 

テスト済みテキスト:

費用£2,000または建物、dcoratingや家庭の改善LietuvosvalstiečiųIRžaliųjųsąjungos(LVŽS)

MSエクセルで開いた同じテキストの詳細:

改善dcoratingや家庭£2,000以上の建物の上を、過ごしLietuvosvalstieÄiųIRžaliųjų sÄ... jungos(LVŽS)

答えて

0

MS ExcelのバージョンがANSIでエンコードされているかのようにファイルを読み込んでいるようですので、これは最後にExcelの問題と思われます。 Is it possible to force Excel recognize UTF-8 CSV files automatically?が含まれていますか?特にエクスプローラ/コマンドラインからExcelを使用してデータを開くのではなく、Excelを開いてデータをインポートすると機能しますか?

+0

ウィザードを使用してCSVをインポートするか、エンコードをBOM付きのUTF-8に変換してからメモ帳に開くとExcelで動作します。 BOMを追加する正しい方法はありますか?私は 'writef.writerow(codecs.BOM_UTF8)'を試みたが、うまくいかなかった。 – Mudyla

+0

BOM: 'writerow( '\ uefbbbf')' を明示的に試してみることはできますが、それは正式に推奨されていません - おそらくそれがなぜ自動的に行われなかったのでしょうか? –

+0

私はこれを試しました。 – Mudyla

関連する問題