Python MySQL CSV导出到json奇怪的编码

ale*_*xsc 8 python mysql csv json utf-8

我收到了从MySQL数据库导出的csv文件(我认为编码是latin1,因为语言是西班牙语).不幸的是,编码是错误的,我根本无法处理它.如果我使用文件:

$ file -I file.csv file.csv: text/plain; charset=unknown-8bit

我试图在python中读取文件并将其转换为utf-8,如:

r.decode('latin-1').encode("utf-8")

或使用mysql_latin1_codec:

r.decode('mysql_latin1').encode('UTF-8')

我试图将数据转换为json对象.保存文件时出错:

'UnicodeEncodeError:'ascii'编解码器无法对位置中的字符进行编码'

你知道我怎么能把它转换成普通的utf-8字符?或者我如何将数据转换为有效的json?谢谢!!

小智 1

通过使用 Continuum Analytics 的 pandas 数据框,我得到了非常好的结果。

你可以这样做:

import pandas as pd
from pandas import *

con='Your database connection credentials user, password, host, database to use'
data=pd.read_sql_query('SELECT * FROM YOUR TABLE',conn=con)
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

data.to_csv('path_with_file_name')
Run Code Online (Sandbox Code Playgroud)

或转换为 JSON:

data.to_json(orient='records')
Run Code Online (Sandbox Code Playgroud)

或者如果您更喜欢自定义 json 格式,请参阅此处的文档: http://pandas.pydata.org/pandas-docs/stable/ generated/pandas.DataFrame.to_json.html