python string模块 分类: python基础学习 python Module 2013-08-16 17:50 294人阅读 评论(0) 收藏
以前断断续续的看python,由于应用少,总是看了就忘,所以这里记录下来,已备以后查看。这次主要是把python里面的常用模块简单的做下记录.记录的部分仅仅是自己的理解。
这里的python版本是2.5.2
>>> import sys
>>> sys.version
'2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]'
>>> import string
>>> dir(string)
['Template', '_TemplateMetaclass', '__builtins__', '__doc__', '__file__', '__name__', '_float', '_idmap', '_idmapL', '_int', '_long', '_multimap', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol',
'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation',
'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']
上面列出了python列出的所有方法和变量,我们来做一下分类统计
下面我们来分类统计下string模块当中的变量,函数和类
>>> funOrC=[]
>>> vars=[]
>>> for fv in dir(string):
name="string.%s"%fv
if callable(eval(name)):
funOrC.append(fv)
else:
vars.append(fv)
>>> funOrC
['Template', '_TemplateMetaclass', '_float', '_int', '_long', '_multimap', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'expandtabs', 'find', 'index', 'index_error', 'join', 'joinfields', 'ljust',
'lower', 'lstrip', 'maketrans', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'zfill']
>>> vars
['__builtins__', '__doc__', '__file__', '__name__', '_idmap', '_idmapL', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'digits', 'hexdigits', 'letters', 'lowercase', 'octdigits', 'printable', 'punctuation', 'uppercase', 'whitespace']
对于变量,我们依次输出其值看一下就可以了。
>>> for v in vars[6:]:
v,"====>",eval("string.%s"%v) # 或使用 getattr(string,v) getattr(模块名,函数名或属性名)
import string for i in dir(string): if not callable (eval("string.%s" % i)) and not i.startswith('_'): print "string.%s -->" % i,getattr(string,i) |
('_re', '====>', <module 're' from 'C:\Python25\lib\re.pyc'>)
('ascii_letters', '====>', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
('ascii_lowercase', '====>', 'abcdefghijklmnopqrstuvwxyz')
('ascii_uppercase', '====>', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
('digits', '====>', '0123456789')
('hexdigits', '====>', '0123456789abcdefABCDEF')
('letters', '====>', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
('lowercase', '====>', 'abcdefghijklmnopqrstuvwxyz')
('octdigits', '====>', '01234567')
('printable', '====>', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c')
('punctuation', '====>', '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~')
('uppercase', '====>', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
('whitespace', '====>', '\t\n\x0b\x0c\r ')
对于函数我们通过举例的形式来看一下
string.capitalize(s)返回字符串s的一个副本,这个副本的第一个字符大写。
>>> s="hello world"
>>> string.capitalize(s)
'Hello world'
string.capwords(s)每个单词的首字母大写。
>>> string.capwords(s)
'Hello World'
通过help(string.capwords)也可以看到他的实现吧。首先使用split进行拆分,再用capitalize进行首字母大写,最后用join连接。
通过这个自己实现以下
>>> def mycapwords(arg):
newstring=[]
strlist=arg.split()
for str in strlist:
newstring.append((str.capitalize()))
return string.join(newstring)
>>> string.center(s,20)
' hello world '
>>> string.center(s,2)
'hello world'
>>> string.center(s,20,'*')
'****hello world*****'
string.center(s,width[,fillchar])函数,用指定的宽度来返回一个居中版的s,如果需要的话,就用fillchar进行填充,默认是空格。但是不会对s进行截取。即如果s的长度比width大,也不会对s进行截取。
>>> string.count(s,"h")
1
string.count(s,sub[,start[,end]])返回在s[start:end]范围内子串sub在字符串s当中出现的次数
>>> string.find(s,"a")
-1
string.find(s,sub[,start[,end]])返回在s[start:end]范围内子串sub在字符串s当中出现的最小下标,没有找到返回-1
string.index(s,sub[,start[,end]])与string.find方法类似,只不过当没有找到子串sub的时候,会抛出ValueError异常
>>> string.index(s,"a")
Traceback (most recent call last):
File "<pyshell#233>", line 1, in <module>
string.index(s,"a")
File "C:\Python25\lib\string.py", line 326, in index
return s.index(*args)
ValueError: substring not found
>>> string.ljust(s,20)
'hello world '
string.ljust(s, width[, fillchar])字符串的左对齐,
那么string.rjust()就是右对齐。
>>> string.upper(s)
'HELLO WORLD'
>>> string.lower(s)
'hello world'
string.upper()和string.lower()比较简单。就是全部转换为大写或者小写
>>> string.swapcase(s)
'HELLO WORLD'
string.swapcase()实现大小写的转换。将大写转换为小写,将小写转换为大写。
>>> s=" hello world "
>>> string.strip(s)
'hello world'
string.strip(s)剔除字符串s左右空格
>>> string.lstrip(s)
'hello world '
>>> string.rstrip(s)
' hello world'
string.lstrip(s)和string.rstrip(s)分别剔除字符串左、右边的空格
>>> string.zfill(s,20)
'000000 hello world '
>>> string.zfill(s,2)
' hello world '
string.zfill(s,width)与center类似,不过这里的填充使用"0"来替代。
s="abc"
>>> x=string.maketrans(string.ascii_letters,string.ascii_letters[2:]+string.ascii_letters[:2])
>>> string.translate(s,x)
'cde'
string.maketrans()和string.translate()一般配合使用,用maketrans定义字符串的转换规则,然后用translate来实现。
我们可以用它来实现swapcase()方法
>>> x=string.maketrans(string.ascii_letters,string.letters)
>>> string.translate("AbCdEf",x)
'aBcDeF'
>>> string.translate("Ab CdE f",x)
'aB cDe F'
>>> string.split("hello world")
['hello', 'world']
string.split(s, sep=None, maxsplit=-1)用sep拆分s,返回拆分后的列表,如果sep没有提供或者为None,那么默认的就是空格
string.join的功能刚好与其相反。
>>> l=string.split("hello world")
>>> string.join(l)
'hello world'
join(list [,sep])是用sep把list组合成一个字符串返回。