zoukankan      html  css  js  c++  java
  • Python编码格式的指定方式

    参考自: http://python.jobbole.com/85852/, 原文探究的更深,有兴趣的可以去看看。

    简介来讲就是使用一种特殊的注释来声明编码格式,如何判断这种格式也用了很简单粗暴有效的办法--正则表达式;正则表达式如下:

    ^[ 	v]*#.*?coding[:=][ 	]*([-_.a-zA-Z0-9]+)
    

    也就是说

    # -*- coding:utf-8 -*-
    
    # coding=utf-8
    
    # -*- coding=utf-8 -*-
    

    都可以。而第一种是Emacs推荐的写法 - -。

    而根据 ([-_.a-zA-Z0-9]+) 选出来的结果则去匹配相应的编码方式,匹配编码方式使用了Python自带的codecs模块。

    用老方式来看看自带的帮助文档,help(codecs),唔,没有任何有用的东西:

    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
    

    再去链接那里点开看看好了,“This module defines base classes for standard Python codecs (encoders and decoders) and provides access to the internal Python codec registry, which manages the codec and error handling lookup process. ”,意思是说这个模块就用来解码和编码的,提供了Python内部编码方式的注册,处理编码还有错误信息。

    那在看看里边包含了什么:

    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',
    

     唔,一大堆函数,不细看了。

    PS:再次感叹,官方文档很赞。

    然后,这种思考的方式很值得学习 - -。

  • 相关阅读:
    android头像更换(实现拍照和从手机图片里选择两种形式)
    安卓开发实战-记账本APP(六)
    安卓开发实战-记账本APP(五)
    安卓开发实战-记账本APP(四)
    安卓开发实战-记账本APP(三)
    BaseAdapter的三种表达式分析,startActivityForResult的使用
    使用Bundle在Activity之间交换数据
    深入理解JVM-类加载器深入解析(3)
    深入理解java内存模型--读书笔记
    深入理解JVM-类加载器深入解析(2)
  • 原文地址:https://www.cnblogs.com/wswang/p/5718587.html
Copyright © 2011-2022 走看看