【问题标题】:SPSS-Python write to CSV - wrong encoding when opening in ExcelSPSS-Python 写入 CSV - 在 Excel 中打开时编码错误
【发布时间】:2017-12-15 03:43:31
【问题描述】:

在 SPSS 中,我使用 python 将列表列表写入 csv 文件:

begin program.

import spss,spssaux, sys, csv, codecs

def WriteDim():

    MyArray=[some list of lists]
    for MyVar in MyFile.varlist:
        MyArray.append([MyVar.name,MyVar.label])

    DimFile="DimCSV.csv"

    with codecs.open(DimFile, "w",encoding='utf8') as output:
        writer = csv.writer(output,  lineterminator='\n')
        writer.writerows(MyArray)

end program.

我的练习数组中有一些西班牙语文本,例如"reparación"。如果我在文本编辑器中打开输出文件,一切看起来都很好。但是,如果我在 Excel 2016 中打开它,它看起来像这样:"reparación"。我需要转到“数据/从文本导入”并手动选择 UTF 编码,但这不是我的 SPSS 程序未来用户的选项。

有没有什么方法可以写入文件以便 Excel 使用 UTF-8 编码打开它? 它必须是一个 csv 文件 - 在 excel 中打开它只是它的一种用途。

【问题讨论】:

    标签: python excel csv encoding spss


    【解决方案1】:

    虽然 Serge Ballesta 的答案非常适合西班牙语,但我发现 encoding='utf-8-sig' 最适合我测试的所有字符。我觉得应该使用 UTF-8,因为它比其他建议的编码更常见。

    感谢这个主题: Write to UTF-8 file in Python

    【讨论】:

      【解决方案2】:

      codecs.open(DimFile, "w",encoding='utf8')明确要求使用utf8编码,后来又说你不想使用utf8。直接使用预期的编码即可:

      with codecs.open(DimFile, "w",encoding='cp1252') as output:
      

      (cp1252 是 Windows 上西班牙语的常用编码)

      【讨论】:

      • 我说我不想在Excel中打开时手动选择编码;我假设 UTF-8 可以工作,所以我将文件保存为 UTF,但似乎 Excel 默认不会以 UTF 格式打开文件。问题是Excel没有使用文件编码打开它
      • @horace_vr:Excel 默认使用系统编码,通常是西欧语言系统的 win-1252 代码页。为什么要在 Windows 上使用 utf8 编码?
      • 我正在寻找一种方法来保存这些文本。我认为 UTF-8 可以解决问题,但学徒不会。据我所知,win-1252 不是 python 程序的有效编码
      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2015-09-28
      相关资源
      最近更新 更多