字符串序列:
模块:string:字符串处理函数,但不推荐使用。因为只支持ACSII码,Unicode环境中不适用。
字符串链接方式:
1. 使用+操作符。a=’abc’ +’cba’ 则 a的值为’abccba’
2. 使用strobj.join(序列) 方法。a= ‘ abc’.join((‘a’,’b’,’c’))则a的值为’abcabc’
3.字符串格式符%s。a=’%s%s’ %(‘abc’,’abc’)则a的值为’abcabc’
4. 编译时字符串链接。代码中连续书写两个字符串:例:a=’abc’”abc”则a为’abcabc’.
通过这种方法,你可以把长的字符串分成几部分来写,而不用加反斜杠。如上所示,
你可以在一行里面混用两种分号。这种写法的好处是你可以把注释也加进来,如下:
>>> f =urllib.urlopen('http://' # protocol
... 'localhost' #hostname
... ':8000' # port
...'/cgi-bin/friends2.py') # file
如你所想,代码等价于
>>> f =urllib.urlopen('http://' 'localhost' ':8000' '/cgi-bin/friends2.py')
字符串格式化符号
字格式化字符 转换方式
%c 转换成字符(ASCII 码值,或者长度为一的字符串)
%r a 优先用 repr()函数进行字符串转换
%s 优先用 str()函数进行字符串转换
%d / %i 转成有符号十进制数
%u b 转成无符号十进制数
%o b 转成无符号八进制数
%x b /%X b (Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大
小写)
%e/%E 转成科学计数法(e/E 控制输出 e/E)
%f/%F 转成浮点数(小数部分自然截断)
%g/%G %e 和%f/%E 和%F 的简写
%% 输出%符串格式化:
格式化操作符辅助指令
符号 作用
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于
用的是'x'还是'X')
0 显示的数字前面填充‘0’而不是默认的空格。
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n m 是显示的最小总宽度,n 是小数点后的位数。
例:“%10s”%(‘abc’)为’ abc’
例:”%03.3f”%(1.45) 为001.450
字符串模板函数设置字符串格式:在模板中使用${占位符}。模板函数是string模块中的方法。
首先用template()方法创建带占位符的字符串对象,在使用字符串对象时,用字符串的sbustitute()he safe_substitute()方法指定占位符的值,如下例所示:
>>>from string import Template
>>> s =Template('There are ${howmany} ${lang} Quotation Symbols')
>>>print s.substitute(lang='Python', howmany=3)
>>> Thereare 3 Python Quotation Symbols
特殊字符,控制字符与原始字符串:\与r/R
单引号’’, 双引号 “” ,三引号’’’ ’’’(“”” ”””)以及反斜杠\是具有特殊含义的字符。
字符\可对字符进行转义,字符前加\可使之代表特殊含义, 在特殊字符前前加\可取消特殊字符代表的含义,而仅仅将其作为普通字符对待。
\n, \t, \a, \b, \v,\f, \r, \’, \”, \\
在字符串前面加r或者R可以取消字符串中的转义字符进行转义操作,而返回原始字符。
r”c:\log.txt”
Unicode: u/U:
Unicode 通过使用一个或多个字节来表示一个字符的方法突破了ASCII 的限制.在这样机
制下,Unicode 可以表示超过 90,000 个字符。
Python中可以通过在字符串前面加一个'u'前缀的方式声明 Unicode 字符串,这个'u'前缀告诉Python 后面的字符串要编码成Unicode字符串. 例:u’I love you’
>>>"Hello World" # ASCII string
>>>u"Hello World" # Unicode string
str(obj) 和chr([0-255])只支持ACSII编码字符串,unicode(obj)和unichar([0-65535])是用来支持Unicode编码字符串。unicode(obj)可以调用obj的__unicode__()方法返回一个Unicode字符串。
CODEC是 COder/DECoder 的首字母组合,表示字符的编码方式。因为Unicode支持多种编码方式:utf-8/utf-16/iso8859-1(Latin-1)
UTF-8: 兼容ASCII,用1-4个字节来编码字符。是最常用的编码方式。
UTF-16: 每个字符编码用等长的16位字(两个字节)来存储,不兼容ASCII。在不同的系统上,这两个字节顺序不一样。一般的UTF-16编码文件都需要一个BOM(Byte OrderMark),或者显示定义字节序(大端UTF-16-BE/小端UTF-16-LE)
因为Unicode支持多种编码,因此在读写字符串时要指定编码方式(encoding参数).
Python 的字符串对象提供了encode([CODEC])/decode([CODEC])方法编码解码字符串。decode()和 encode()内建函数接受一个字符串做参数返回该字符串对应的解码后/编码后
的字符串
CODEC=’utf-8’
init_str=’HelloWorld’
bytes_out=init_str.encode(CODEC)
程序设计中要提前考虑如何对Unicode的支持,否则一旦出现问题,会非常麻烦,浪费很多工作量。需要了解Python各个模块是否支持Unicode。
常用Unicode 编辑码
编码 描述
utf-8 变量长度为 8 的编码(默认编码)
utf-16 变量长度为 16 的编码(大/小端)
utf-16-le 小端 UTF-16 编码
utf-16-be 大端 UTF-16 编码
ascii 7-bit 7 位 ASCII 码表
iso-8859-1 ISO 8859-1 (Latin-1) 码表
unicode-escape (定义见 Python Unicode 构造函数)
raw-unicode-escape(定义见Python Unicode 构造函数)
native Python 用的内部格式
字符串模块与函数:
模块 描述
string 字符串操作相关函数和工具,比如 Template 类. 只支持ACSII码。
re 正则表达式:强大的字符串模式匹配模块
struct 字符串和二进制之间的转换
c/StringIO 字符串缓冲对象,操作方法类似于 file 对象.
base64 Base 16,32,64 数据编解码
codecs 解码器注册和基类
crypt 进行单方面加密
difflib 找出序列间的不同
hashlib 多种不同安全哈希算法和信息摘要算法的 API
hma HMAC 信息鉴权算法的 Python 实现
md5 RSA 的 MD5 信息摘要鉴权
rotor 提供多平台的加解密服务
sha NIAT 的安全哈希算法 SHA
stringprep 提供用于 IP 协议的 Unicode 字符串
textwrap 文本打包和填充
unicodedata Unicode 数据库