一文说清文本编码那些事

2020-03-01 15:02 Python

一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。

试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。 有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,但无法自证清白,更别说帮同事 debug 了。

有时,靠着百度和一手瞎调的手艺,乱码也能解决。 尽管如此,还是很羡慕那些骨灰级程序员。 为什么他们每次都能犀利地指出问题,并快速修复呢? 原因在于,他们早就把编码问题背后的各种来龙去脉搞清楚了。

本文从 ASCII 码说起,带你扒一扒编码背后那些事。 相信搞清编码的原理后,你将不再畏惧任何编码问题,彻底与乱码说拜拜。

从 ASCII 码说起

现代计算机技术从英文国家兴起,最先遇到的也是英文文本。 英文文本一般由 26 个字母、 10 个数字以及若干符号组成,总数也不过 100 左右。

计算机中最基本的存储单位为 字节 ( byte ),由 8 个比特位( bit )组成 …


阅读全文

用 Python 读写 Excel 表格

2018-10-15 20:44 Python

Python 可以读写 Excel 表格吗?

当然可以。 Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者。

openpyxl设计非常漂亮 ,你一定会喜欢它!不信请往下看:

工作簿

开始 openpyxl 前,无需提前建好工作簿( Workbook )。 只需导入 Workbook 类,便可在内存中创建新工作簿并开始操作:

>>> from openpyxl import Workbook
>>> wb = Workbook()

新建的工作簿默认预先建好一个工作表,通过 active 属性即可获取:

>>> ws = wb.active

Note

如果工作簿包含多个工作表,该属性将返回第一个。

通过 create_sheet 方法,可以创建新的工作表。 创建可以是在后面追加:

>>> ws1 = wb.create_sheet('Mysheet')

或者 …


阅读全文

Python装饰器高级用法

2017-12-23 14:03 Python

Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的目的。 在函数定义前加上 @xxxx ,然后函数就注入了某些功能,很神奇! 然而,这只是 语法糖 而已,起决定性作用的其实是 闭包

场景

假设,有一些工作函数,用来对数据做不同的处理:

def work_bar(data):
    pass

def work_foo(data):
    pass

我们想在函数调用前后输出日志,怎么办?

傻瓜解法

logging.info('begin call work_bar')
work_bar(1)
logging.info('call work_bar done')

如果有多处代码调用呢?想想就怕!

函数包装

傻瓜解法无非是有太多代码冗余,每次函数调用都要写一遍 logging …


阅读全文