Python编码格式的指定方式

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

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

^[ \t\v]*#.*?coding[:=][ \t]*([-_.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 ([email protected]).

    (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:再次感叹,官方文档很赞。

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

时间: 2024-11-05 17:48:17

Python编码格式的指定方式的相关文章

python读取配置文件的方式

python读取配置文件的方式 1.从config.ini中读取,后缀无所谓,文件名字也无所谓,不过config.ini是常用写法,所谓见名知意 config.ini内容: [global] ip = xxx port = xxx table = xxx uname = xxx passwd = xxx 读取方法 import configparser import os dir_now = os.path.dirname(os.path.dirname(os.path.abspath("set

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==

python批量改动指定文件夹文件名称

这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称: 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径能够自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt能够自己手动改动成你想改的文件名称 newname = a[0]+'.py' #.py也是能够改动 p

[转]mac下Python升级到指定的版本

以2.7升级到3.3为例1.删除原版本a)删除系统库中的版本sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7 b)删除Current版本sudo rm /System/Library/Frameworks/Python.framework/Versions/Currentc)删除/usr/bin目录下的python相关文件find . -name "py*" -print| xargs rm -rf

Python文件使用“wb”方式打开,写入内容

Python文件使用“wb”方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入的字符类型需为二进制格式,如:f.write("hello".encode('ascii')) 写入的编码范围不为128以内,就不能使用ascii了,如:fh.write("汉字".encode('UTF-8'))

python多线程监控指定目录

import win32file import tempfile import threading import win32con import os dirs=["C:\\WINDOWS\\TEMP",tempfile.gettempdir()] def start_monitor(path_to_watch): h_directory = win32file.CreateFile(path_to_watch, win32con.GENERIC_READ , win32con.FIL

python批量修改指定目录文件名

这小例子只要是说明用python怎么批量修改指定目录的文件名: 记得要把脚本跟修改的文件放在同一个目录下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径可以自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt可以自己手动修改成你想改的文件名 newname = a[0]+'.py' #.py也是可以修改 print

python编码格式

Python的字符串 在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,例如: >>> print('包含中文的str') 包含中文的str 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符: >>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>>

linux下python安装到指定目录

由于使用公司服务器时没有root权限,只能把python安装到个人文件夹下,使用源码包方式安装,这里记录一下. 1.python下载 cd到目录/users/w,在此目录下安装python.通过wget命令下载python源码包: $ wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz 2.解压python到当前目录 $ tar zxvf Python-2.7.9.tar.xz 3.编译与安装 a)./configure -