【问题标题】:mysql pandas unicode error while querying on columns查询列时mysql pandas unicode错误
【发布时间】:2015-02-16 08:00:42
【问题描述】:

我有一个 csv 文件,我通过 pandas 读取它。然后我试图对该文件调用 mysql 查询,这引发了错误。

import pandas
import pandasql
fl=pandas.read_csv('file.csv')

文件的列是

fl.columns
Index([ u'time', u'contact', u'address'], dtype='object')

查询是

q=u"""
SELECT contact FROM fl LIMIT 50
"""

我的运行方式

fl_solution=pandasql.sqldf(q,locals())

我得到的错误是:-

ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.

【问题讨论】:

    标签: python mysql unicode


    【解决方案1】:

    尝试这样做:

    fl=pandas.read_csv('file.csv',encoding='utf-8')

    它指定将文件编码为utf-8 编码。在使用从文件或外部源获取的字符串时,也请尝试将字符串编码为 utf-8

    例如:

    stringname.encode('utf-8')

    【讨论】:

    • fl=pandas.read_csv('file.csv',encoding='utf-8') ____ 错误 ::::::: UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in位置 596: 无效的起始字节
    • 那我猜你的文件是另一种编码。尝试找出文件编码并在打开文件时放入。
    • encoding = "ISO-8859-1" 为我工作。但是列名仍然会附加愚蠢的 u。这是非常令人沮丧的一天,完全浪费在这个你身上
    • u 附加到字符串表明字符串编码是 unicode(您可能知道)。您的文件有“latin-1”编码。 This 文档可能会帮助您进一步阅读。
    • 顺便说一句,您是否使用任何编辑器或解释器?见编码。可能是因为它正在读取 unicode 中的列。尝试更改设置。
    【解决方案2】:

    根据harshad 的建议尝试使用不同的编码。

    encoding = "ISO-8859-1" ,此后 mysql 查询也正常工作。

    【讨论】:

    • 你应该已经接受了@harshad 的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2017-09-18
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多