python是啥编码格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python是啥编码格式相关的知识,希望对你有一定的参考价值。

参考技术A python编码总结:
1).首先python有两种格式的字符串,str和unicode,其中unicode相当于字节码那样,可以跨平台使用。
str转化为unicode可以通过unicode(),u,str.decode三种方式
unicode转化为str,如果有中文的话,一般通过encode的方式
2).如果代码中有中文的话,我们一般会添加 "# coding=utf-8",这个是什么作用呢,一般如下:
如果代码中有中文注释,就需要此声明比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。程序会通过
头部声明,解码初始化 u”人生苦短”,这样的unicode对象,(所以头部声明和代码的存储格式要一致
所以,当我们填上编码头的时候,使用s="中文",实际上type(s)是一个str,是已经将unicode以utf-8格式编码成str。
其次,如果我们在代码中使用s=u'中文',相当于将str以utf-8解码成unicode。
推荐学习《python教程》。

Pandas python,工作簿编码类型是啥?

【中文标题】Pandas python,工作簿编码类型是啥?【英文标题】:Pandas python, what is the workbook encoding type?Pandas python,工作簿编码类型是什么? 【发布时间】:2016-10-21 14:35:34 【问题描述】:

我是 python 的新手,也是 Python 中的 pandas 库的新手。该文档没有很好地描述,他们也没有很好地解释它。我想将数据框保存为 excel 格式并在内存中,我找到了以下解释: [Pandas excel to the memory]

我需要关于workbook 的解释。这个变量的值是编码的,我怎么才能看到这个变量的真实值呢?如何解码?它的返回值应该是什么?

编辑:

如何将其传递到 Mandrill api 中的附件内容中。 https://mandrillapp.com/api/docs/messages.python.html

这是excel extension的附件部分:

'attachments': [
            
                'content': content,
                'name': 'fraud_report.xlsx',
                'type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            

我无法打开 excel 文件,并且一直收到来自 Microsoft excel 的错误消息,上面写着 the file format is not valid!... 任何帮助都会有所帮助。谢谢

【问题讨论】:

【参考方案1】:

为了解释,我再次将您链接中的示例粘贴到此处:

# Safe import for either Python 2.x or 3.x
try:
    from io import BytesIO
except ImportError:
    from cStringIO import StringIO as BytesIO

bio = BytesIO()

# By setting the 'engine' in the ExcelWriter constructor.
writer = ExcelWriter(bio, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')

# Save the workbook
writer.save()

# Seek to the beginning and read to copy the workbook to a variable in memory
bio.seek(0)
workbook = bio.read()

writer.save() 方法将数据保存在 BytesIO (bio) 中,而不是 Excel 文件中。也就是说,变量bio存储了excel文件的字节码。

bio.seek(0) 方法将bio 的当前位置(用于读取、写入...)设置为0。这样就可以用下一个方法bio.read()从头开始读取bio的数据了。

变量workbook存储excel文件(或excel工作簿)的字节串。如果你以字节模式读取一个excel文件,你会得到相同的数据。或者你可以写在一个excel文件中:

with open("my_excel_file.xlsx", "wb") as f:
   f.write(workbook)

要从 bio 读取数据并存储在 DataFrame 中,您不需要 bio.read()

bio.seek(0)
df = pd.read_excel(bio, "Sheet1", engine="xlrd")

关于使用 ma​​ndrill 的问题:

ma​​ndrill 的示例中,您会看到:

'attachments': ['content': 'ZXhhbXBsZSBmaWxl',
                      'name': 'myfile.txt',
                      'type': 'text/plain'],...

文档也写到了:

content:附件的内容,base64 编码的字符串

您应该将workbook 编码为base64 并将其用于发送

import base64
content = base64.b64encode(workbook)

P/S:workbookcontent 的类型为 bytes。可能您需要在发送前将content 转换为str

'attachments': ['content': content.decode('utf-8'),
                          'name': 'myfile.xlsx',
                          'type': 'text/plain'],...

补充:如果文件是excel,那么你应该把type改成application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

【讨论】:

我想补充一下我在https://mandrillapp.com/api/docs/messages.python.html中使用mandrillapp来发送消息,所以我不想使用write方法。我想只存储在一个变量中,然后将其发送到附件的content。你对我有其他建议吗? 我不知道mandrillapp。但是您要发送DataFrameExcel File 的内容吗? Mandrill 只接受变量,然后自己构建文件。此应用程序不读取文件。所以我不能给它一个文件。 您要使用mandrillapp 发送带有mailchimp 的邮件,并以excel 文件作为附件吗? 是的,没错!我会,据我所知是不可能传递文件的,所以我想阅读它,然后在 Mandril 的帮助下创建 excel。此外,在您的解释中,df = pd.read_excel(bio, "Sheet1", engine="xlrd") 应该替代workbook = bio.read()。不清楚,如何阅读以及前面的行是什么。

以上是关于python是啥编码格式的主要内容,如果未能解决你的问题,请参考以下文章

java怎么查看一段中文是啥编码格式

浏览器url传的中文是啥编码格式

在字符编码格式选项里UTF-8(无BOM)是啥意思呀?

python默认的字符编码是啥

python基础学习第四天

Pandas python,工作簿编码类型是啥?