python - 尝试使用 chardet 猜测文件的编码

标签 python python-3.x encoding character-encoding chardet

我正在编写一个处理 CSV 文件的程序。这些文件可以有特定的编码。我正在尝试合并一个过程来尝试猜测用户想要使用 chardet 打开的文件的编码。

我正在尝试使用以下代码:

rawdata = open('file.csv', "r").read()
result = chardet.detect(rawdata)

但我得到以下异常:

/usr/lib/python3.5/site-packages/chardet/__init__.py in detect(aBuf)
     23     if ((version_info < (3, 0) and isinstance(aBuf, unicode)) or
     24             (version_info >= (3, 0) and not isinstance(aBuf, bytes))):
---> 25         raise ValueError('Expected a bytes object, not a unicode object')
     26 
     27     from . import universaldetector

ValueError: Expected a bytes object, not a unicode object

我也试过:

result = chardet.detect(bytes(rawdata))

但是得到:

TypeError                                 Traceback (most recent call last)
<ipython-input-47-1137b0adb486> in <module>()
----> 1 result = chardet.detect(bytes(rawdata))

TypeError: string argument without an encoding

这是我要打开的文件的一部分:

rawdata

'þFILEPATHþ\x14þidþ\x14þdocidþ\x14þBEGBATESþ\x14þENDBATESþ\x14þBEGATTACHIDþ\x14þENDATTACHIDþ\x14þCUSTODIANþ\x14þRECIPIENTþ\x14þFROMþ\x14þCCþ\x14þBCCþ\x14þDATESENTþ\x14þTIMESENTþ\x14þSUBJECTþ\x14þDATERCVDþ\x14þTIMERCVDþ\x14þMESSAGEIDþ\x14þPARENTIDþ\x14þCREATEDATEþ\x14þCREATETIMEþ\x14þMODDATEþ\x14þMODTIMEþ\x14þLASTACCDATEþ\x14þLASTACCTIMEþ\x14þFILESIZEþ\x14þNATIVELINKþ\x14þMD5HASHþ\x14þSHA1HASHþ\x14þFILENAMEþ\x14þFILEEXTENSþ\x14þTEXTPATH2þ\x14þPSTNAMEþ\x14þMSGFILETYPþ\x14þMIMETYPþ\x14þISNISTþ\x14þFILESIZEþ\x14þHASATTACHþ\x14þATTRIBUTESþ\x14þPRIORITYþ\x14þSENSITIVITYþ\x14þIMPORTANCEþ\x14þISPRIVATEþ\x14þBUSYSTATþ\x14þMSGFILETYPþ\x14þMSGFLAGSþ\x14þKEYWORDSþ\x14þCATEGORIESþ\x14þMSGFILETYPþ\x14þAUTHORþ\x14þATTACHLISTþ\x14þFROMDOMAINþ\x14þTODOMAINþ\x14þMTGWHEREþ\x14þMTGWHENþ\x14þMGTSTARTDATEþ\x14þMTGSTARTTIMEþ\x14þMTGENDDATEþ\x14þMTGENDTIMEþ\x14þMTGDURþ\x14þMTGZONEþ\x14þREMINDDATEþ\x14þREMINDTIMEþ

最佳答案

首先以二进制形式读取数据怎么样?

rawdata = open('file.csv', "rb").read()

关于python - 尝试使用 chardet 猜测文件的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517301/

相关文章:

Python sqlite3 select from 语句在获取时返回空列表

python - Python 中的 bool 运算(文档中的符号)

JavaFX 多语言 .properties 文件编码

java - 如何在 Java 中修复 URL 中的非法字符?

php - "raw binary format with a length of 20"到底是什么?

python - Tensorflow 获取张量中值的索引

python - Django 'File' 对象在管理中的更改表单上没有属性 '_size'

Python3 编写 HTTP GET 消息

Python 属性解析对于 xml :id 返回 None

python - 如何在 Python 中使用 smtplib 通过电子邮件发送 .html 文件