Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90060
  • 博文数量: 30
  • 博客积分: 1501
  • 博客等级: 上尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-01 09:23
文章分类

全部博文(30)

文章存档

2011年(6)

2010年(24)

分类: Python/Ruby

2010-11-04 15:27:19

 字符串类型操作
替换
>>> s='spam'
>>> s.replace('pa','XYZ')
'sXYZm'
查找偏移
>>> s
'spam'
>>> s.find('pa')
1
字符串分割
>>> line='aaa,bbb.ccc,ddd.eee,fff'
>>> line.split('.')
['aaa,bbb', 'ccc,ddd', 'eee,fff']
在这里以.号为分割符
>>> line.split(',')
['aaa', 'bbb.ccc', 'ddd.eee', 'fff']
这里以,号为分割符
将小写字母改成大写
>>> s='spam'
>>> s.upper()
'SPAM'
这些内容都可以通过dir()和help()找到
>>> dir('s')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> help(s.upper)
Help on built-in function upper:

upper(...)
    S.upper() -> string
    
    Return a copy of the string S converted to uppercase
去除字符串右边空格
>>> line='aaa,bbb,ccc,ddd\n'
>>> line
'aaa,bbb,ccc,ddd\n'
>>> line=line.rstrip()
>>> line
'aaa,bbb,ccc,ddd'
去除字符串左边空格
>>> line='\naaa'
>>> line=line.rstrip()
>>> line
'\naaa'
>>> line=line.lstrip()
>>> line
'aaa'
编写字母的其他方法
>>> s='a\nb\tc'
>>> len(s)
5
将字符转换成ASCII码
>>> ord('a')
97
>>> ord('\n')
10
模式匹配
>>> import re
>>> match=re.match('Hello[ \t]*(.*)world','Hello        python world')
>>> match.group(1)
'python '
另一个例子
>>> match=re.match('/(.*)/(.*)/(.*)','/etc/sysconfig/networks')
>>> match.groups()
('etc', 'sysconfig', 'networks')
序列操作
>>> l=[123,'spam',1.23]
>>> len(l)
3
>>> l+[4,5,6]
[123, 'spam', 1.23, 4, 5, 6]
类型特定的操作
添加hi这个元素
>>> l.append('hi')
>>> l
[123, 'spam', 1.23, 'hi']
移除第三个元素1.23
>>> l.pop(2)
1.23
>>> l
[123, 'spam', 'hi']
从小到大排序
>>> m=[123,321,234]
>>> m.sort()
>>> m
[123, 234, 321]
从大到小排序
>>> m.reverse()
>>> m
[321, 234, 123]
字母版排序
>>> m=['aaa','ccc','bbb']
>>> m
['aaa', 'ccc', 'bbb']
>>> m.sort()
>>> m
['aaa', 'bbb', 'ccc']
>>> m.reverse()
>>> m
['ccc', 'bbb', 'aaa']
>>> m=['acd','ade','acc']
>>> m
['acd', 'ade', 'acc']
>>> m.sort()
>>> m
['acc', 'acd', 'ade']
>>> m.reverse()
>>> m
['ade', 'acd', 'acc']
边界检查
>>> m
['ade', 'acd', 'acc']
>>> m[1]
'acd'
>>> m[99]
Traceback (most recent call last):
  File "", line 1, in ?
IndexError: list index out of range
超出列表的范围将会报错
而且也不允许给超出列表范围的地方赋值
>>> m[99]=1
Traceback (most recent call last):
  File "", line 1, in ?
IndexError: list assignment index out of range
嵌套
>>> m=[[1,2,3],[2,3,4],[3,4,5]]
>>> m
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> m[1]
[2, 3, 4]
>>> m[1][2]
4
列表解析
>>> col2=[row[1] for row in m]
>>> col2
[2, 3, 4]
>>> m
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
复杂的列表解析
将解析出来的元素加1并显示出来
>>> col2=[row[1]+1 for row in m]
>>> col2
[3, 4, 5]
将解析出来的元素除以2余数为0的元素显示出来
>>> col2=[row[1] for row in m if row[1]%2==0]
>>> col2
[2, 4]
将m中的第i个元素里的第i个元素显示出来,i可以是0,1,2中的一个
>>> diag=[m[i][i] for i in [0,1,2]]
>>> diag
[1, 3, 5]
将c元素两个两个的显示,c来自spam这个字符串
>>> o=[c*2 for c in 'spam']
>>> o
['ss', 'pp', 'aa', 'mm']
字典
映射操作
>>> d={'food':'spam','quantity':4,'color':'pink'}
>>> d['food']
'spam'
>>> d['quantity']+1
5
>>> d
{'food': 'spam', 'color': 'pink', 'quantity': 4}
>>> d['quantity']+=1
>>> d
{'food': 'spam', 'color': 'pink', 'quantity': 5}
创建字典并添加元素
>>> d={}
>>> d['a']=1
>>> d['b']=2
>>> d['c']='spam'
>>> d
{'a': 1, 'c': 'spam', 'b': 2}
重访嵌套
>>> rec={'name':{'first':'jia','last':'lu'},'age':22,'dob':{'y':1988,'m':'may','d':'28th'}}
>>> rec
{'dob': {'y': 1988, 'm': 'may', 'd': '28th'}, 'age': 22, 'name': {'last': 'lu', 'first': 'jia'}}
>>> rec['name']['first']
'jia'
给函数添加元素
>>> rec={1:5,'job':[1,2,3]}
>>> rec
{1: 5, 'job': [1, 2, 3]}
>>> rec['job'].append(4)
>>> rec
{1: 5, 'job': [1, 2, 3, 4]}
清空函数
>>> rec
{1: 5, 'job': [1, 2, 3, 4]}
>>> rec=0
键的排序:for循环
>>> d={'a':1,'b':2,'c':3}
>>> ks=d.keys()
>>> ks
['a', 'c', 'b']
>>> ks.sort()
>>> ks
['a', 'b', 'c']
>>> for key in ks:
...    print key, '=>',d[key]
... 
a => 1
b => 2
c => 3
可以将这个脚本简化一下
>>> for key in sorted(d):
...    print key, '=>',d[key]
... 
a => 1
b => 2
c => 3
for循环的另一个例子:
>>> for c in 'spam':
...     print c.upper()
... 
S
P
A
M
不存在的键:if测试
>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> d['e']=99
>>> d
{'a': 1, 'c': 3, 'b': 2, 'e': 99}
>>> d['f']
Traceback (most recent call last):
  File "", line 1, in ?
KeyError: 'f'
>>> d.has_key('f')
False
>>> if not d.has_key('f'):
...    print 'missing'
... 
missing
元组
元组是序列但是它具有不可变性和字符串类似
>>> t=(1,2,3,4)
>>> len(t)
4
>>> t+(5,6)
(1, 2, 3, 4, 5, 6)
>>> t
(1, 2, 3, 4)
>>> t[0]
1
>>> t
(1, 2, 3, 4)
>>> t[0]=2
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: object does not support item assignment
文件
python与电脑上外部文件的直接交互
对外部文件的写操作
>>> f=open('simonchia.txt','w')
>>> f.write('i am simonchia\n')
>>> f.write('i love hangzhou\n')
>>> f.close()
[jialu.pt@xenunstable ~]$ ls
bin  simonchia.txt
[jialu.pt@xenunstable ~]$ vim simonchia.txt 
i am simonchia
i love hangzhou
对外部文件的读操作
>>> f=open('simonchia.txt')
>>> b=f.read()
>>> b
'i am simonchia\ni love hangzhou\n'
>>> print b
i am simonchia
i love hangzhou

>>> b.split()
['i', 'am', 'simonchia', 'i', 'love', 'hangzhou']

阅读(3254) | 评论(0) | 转发(0) |
0

上一篇:2010.11.3

下一篇:2010.11.4

给主人留下些什么吧!~~