【问题标题】:Pandas - reading from SQL server, and outputting to csv - encoding problemsPandas - 从 SQL 服务器读取,并输出到 csv - 编码问题
【发布时间】:2015-08-12 16:02:15
【问题描述】:

我正在从 SQL Server 2014 12.0.4100 SP1 数据库将数据读入 pandas。数据以 Windows-1252 编码存储。

我正在使用 python 2.7。

我想将生成的数据框输出到 Excel 或 csv。具体来说:

import pyodbc
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.\my_server;Database=my_db;Trusted_Connection=yes;')
sql = "select * from my_table"
df = pd.read_sql(sql, cnxn)
df.to_csv("my_csv.csv", encoding="utf-8")

但是,这会失败并显示错误消息:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 13966: invalid start byte

我需要做什么才能成功导出到 utf-8 csv?

【问题讨论】:

    标签: python sql-server csv pandas encoding


    【解决方案1】:

    您是否尝试使用“ISO-8859-2”作为编码?

    df.to_csv("my_csv.csv", encoding="ISO-8859-2") 
    

    【讨论】:

      【解决方案2】:

      解决方案是将任何包含非 ASCII 字符的列显式转换为 UTF-8。

      您可以使用以下代码执行此操作:

      def convert(my_str):
          return my_str.decode('Windows-1252').encode('utf-8')
      df["Name"] = df["Name"].apply(convert)
      

      转换后,您将能够毫无问题地写入 .csv 和 Excel 格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-15
        • 2016-02-06
        相关资源
        最近更新 更多