该内容是参考自,原文所探讨的问题更为深入, 对此如果感兴趣的话, 不妨去查看一下。
简单来说, 就是利用一种特殊的注释方式来声明编码格式。想要判断这种格式, 可以采用一种非常简单、粗暴且有效的手段——那就使用正则表达式。具体的正则表达式内容如下所示:
^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)换句话说, 这就是。
# -*- coding:utf-8 -*-# coding=utf-8
# -*- coding=utf-8 -*-
这两种方式都是没问题的。而对于那第一种办法来说, 它是被emacs这个软件给推荐着去用的写法, 就这样。
而根据 (
-_.a-zA-Z0-9
+) 选出来的结果则去匹配相应的编码方式, 而匹配编码方式使用了自带的模块。
我们可以试着去用一下那些旧有的方法, 来查看一查看软件内自带有用的那帮助文档, 也就是调用那个叫做help()的功能来看一下, 可是不行哦, 最后得到的结果里面并没有包含任何对我们有帮助的有价值的信息。
Help on module codecs:NAME
codecs - codecs -- Python Codec Registry, API and helpers.
FILE
/usr/lib/python2.7/codecs.py
MODULE DOCS
http://docs.python.org/library/codecs
DESCRIPTION
Written by Marc-Andre Lemburg (mal@lemburg.com).
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
FUNCTIONS
再去那个链接的地方点击看看算了, 这句话的意思是说这个模块就是用来专门进行解码以及编码操作的, 而且还提供了对于内部这种编码方式的一个注册功能, 同时也负责对编码过程以及相关的错误信息进行处理。
接着我们再来看一下它的内容到底都包含了哪些具体的东西。
In [5]: dir(codecs)Out[5]:
['BOM',
'BOM32_BE',
'BOM32_LE',
'BOM64_BE',
'BOM64_LE',
'BOM_BE',
'BOM_LE',
'BOM_UTF16',
'BOM_UTF16_BE',
'BOM_UTF16_LE',
'BOM_UTF32',
'BOM_UTF32_BE',
'BOM_UTF32_LE',
'BOM_UTF8',
'BufferedIncrementalDecoder',
'BufferedIncrementalEncoder',
'Codec',
'CodecInfo',
'EncodedFile',
唔, 这里有着数量众多的一堆函数, 因此便是不进行细致的阅读查看了。
补充说明一下, 我要再一次发出感慨, 那就是那些官方给出的文档是非常好的。然后, 这种思考的方式是十分的值得被学习的。