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)
ウィザードを使用してCSVをインポートするか、エンコードをBOM付きのUTF-8に変換してからメモ帳に開くとExcelで動作します。 BOMを追加する正しい方法はありますか?私は 'writef.writerow(codecs.BOM_UTF8)'を試みたが、うまくいかなかった。 – Mudyla
BOM: 'writerow( '\ uefbbbf')' を明示的に試してみることはできますが、それは正式に推奨されていません - おそらくそれがなぜ自動的に行われなかったのでしょうか? –
私はこれを試しました。 – Mudyla