Python学习笔记9-1

字符串序列:

模块: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 数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值