python基礎教程(五)
字符串基本操作
所有標準的序列操作(索引、分片、乘法、判斷成員資格、求長度、取最小值和最大值)對字符串同樣適用,前面已經講述的這些操作。但是,請註意字符串都是不可變的。
字符串的方法:
字符串從string 模塊中“繼承”了很多方法,這裏只介紹一些特別有用的。
1、find
find 方法可以在一個較長的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果沒有找到則返回-1.
>>> ‘with a moo-moo here. and a moo-moo ther‘.find(‘moo‘)
7
>>> title = "Monty Pyhon‘s Flying Circus"
>>> title.find(‘Monty‘)
0
>>> title.find(‘Python‘)
-1
2、join
join 方法是非常重要的字符串方法,它是split方法的逆方法,用來在隊列中添加元素:
>>> seq = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
>>> sep = ‘+‘
>>> sep.join(seq)
‘1+2+3+4+5‘
>>> dirs = ‘‘,‘usr‘,‘bin‘,‘env‘
>>> ‘/‘.join(dirs)
‘/usr/bin/env‘
>>> print ‘C:‘ + ‘\\‘.join(dirs)
C:\usr\bin\env
3、lower
lower 方法返回字符串的小寫字母版。
如果想要編寫“不區分大小寫”的代碼的話,那麽這個方法就派上用場了-----代碼會忽略大小寫狀態。
>>> ‘Trondheim Hammer Dance‘.lower()
‘trondheim hammer dance‘
4、replace
replace 方法返回某字符串的所有匹配項均被替換之後得到字符串。
>>> ‘This is a test‘.replace(‘is‘,‘eez‘)
‘Theez eez a test‘
如果,你使用過文字處理工具裏的“查找並替換”功能的話,就不會質疑這個方法的用處了。
5、split
這是一個非常重要的方法,它是join的逆方法,用來將字符串分割成序列。
>>> ‘1+2+3+4+5‘.split(‘+‘)
[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
>>> ‘/usr/bin/env‘.split(‘/‘)
[‘‘, ‘usr‘, ‘bin‘, ‘env‘]
>>> ‘using the default‘.split()
[‘using‘, ‘the‘, ‘default‘]
6、strip
strip 方法返回去除兩側(不包含內部)空格的字符串:
>>> ‘ internal white space is kept ‘.strip()
‘internal white space is kept‘
字典
字典的使用
現實中的字段及在python中的字段都進行了構建,從而可以輕松查到某個特定的詞語(鍵),從而找到它的意義(值)。
某些情況下,字典比列表更加適用:
# 表征遊戲棋盤的狀態,每個鍵都是由坐標值組成的元組;
# 存儲文件修改次數,用文件名作為鍵;
# 數字電話/地址本
創建一個人名列表,以及四位的分機號碼:
>>> names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘sunliu‘]
>>> numbers = [‘2313‘,‘9102‘,‘3158‘,‘4326‘]
#通過下下方法查詢
>>> numbers[names.index(‘zhangsan‘)]
‘2313‘
創建和使用字典
字典可以通過下面方式創建
>>> phonebook = {‘zhangsai‘:‘2313‘,‘lisi‘:‘9102‘,‘wangwu‘:‘3158‘}
字典由多個鍵及與其對應的值構成,在上例中,名字是鍵,電話號碼是值。
dict函數
可以用dict 函數,通過其他映射(比如其他字典)或(鍵,值)這樣的序列對建立字典。
>>> items = [(‘name‘,‘gumby‘),(‘age‘,42)]
>>> d = dict(items)
>>> d
{‘age‘: 42, ‘name‘: ‘gumby‘}
>>> d[‘name‘]
‘gumby‘
dict函數也可以通過關鍵字參數來創建字典,如下例所示:
>>> d = dict(name =‘gumby‘, age=42)
>>> d
{‘age‘: 42, ‘name‘: ‘gumby‘}
字典示例:
#簡單數據庫
#使用人名作為鍵的字典,每個人用另一個字典表示,其鍵‘phone’和‘addr’分別表示他們的電話號和地址,
people ={
‘zhangsan‘:{
‘phone‘:‘2341‘,
‘addr‘:‘foo drive 23‘
},
‘lisi‘:{
‘phone‘:‘9102‘,
‘addr‘:‘bar street 42‘
},
‘wangwu‘:{
‘phone‘:‘3158‘,
‘addr‘:‘baz avenue 90‘
}
}
#針對電話號碼和地址使用的描述性標簽,會在打印輸出的時候用到
labels = {
‘phone‘:‘phone number‘,
‘addr‘:‘address‘
}
name = raw_input(‘Name:‘)
#查找電話號碼還是地址? 使用正確的鍵:
request = raw_input(‘phone number(p) or address (a)?‘)
#使用正確的鍵:
if request == ‘p‘:key = ‘phone‘
if request == ‘a‘:key = ‘addr‘
#如果名字是字典中的有效鍵才打印信息:
if name in people: print "%s‘s %s is %s." %(name, labels[key], people[name][key])
------------------------
#輸入內容
>>>
Name:zhangsan
phone number(p) or address (a)?p
#打印結果
zhangsan‘s phone number is 2341.
python基礎教程(五)