在Python中将unicode写入csv并使用MS Excel打开

时间:2017-01-18 12:01:58

标签: python-2.7 csv python-unicode

我正在编写小应用程序来比较两个XML文件,然后将差异输出到CSV。当我用notepad ++打开CSV时,所有看起来都很好(显示编码UTF-8,但是当用MS Excel打开时我会得到奇怪的字符。有任何想法如何使它在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英镑或以上Lietuvosvalstiečiųiržaliųjųsąjungos(LV®S)

使用MS Excel打开时的相同文字:

在建筑,装修或家居装修方面花费2,000英镑或以上LietuvosvalstieÄiųiržaliųjųsÄ... jungos(LVŽS)

1 个答案:

答案 0 :(得分:0)

似乎MS Excel版本正在读取文件,好像它是用ANSI编码的,所以我认为这最终是一个excel问题 - 你提到其他问题的尝试,包括Is it possible to force Excel recognize UTF-8 CSV files automatically? ?特别是如果打开excel然后导入数据,而不是使用资源管理器/命令行中的excel打开数据,它会起作用吗?