1.1每次處理一個字符(即每次處理一個字符的方式處理字符串)python
print list('theString') #方法一,轉列表
結果:['t', 'h', 'e', 'S', 't', 'r', 'i', 'n', 'g']
for c in 'theString':#方法二,for循環 print c,
結果:t h e S t r i n gc++
print [c for c in 'theString'] #方法三,列表推導式
結果:['t', 'h', 'e', 'S', 't', 'r', 'i', 'n', 'g']
print map(str,'theString')#方法四,map處理,和列表推導式同樣
結果:['t', 'h', 'e', 'S', 't', 'r', 'i', 'n', 'g']
print set('thethe')#此方法只適應特定的時刻,看結果就知道,set把重複的字符去掉了,而且無序
結果:set(['h', 'e', 't'])測試
1.2字符和字符值的轉換spa
print ord('a') #字符轉字符值 print chr(97) #字符值轉字符
print ord(u'\u2020') #返回unicode碼值 print repr(unichr(8224)) #返回unicode字符串
print map(ord,'kaluoc') #字符串轉換成各個字符的值的列表 print ''.join(map(chr,range(97,100))) #將值轉換成字符並鏈接成字符串
結果:code
97 a
8224 u'\u2020'
[107, 97, 108, 117, 111, 99] abc
額外的知識:對象
str()和chr()區別:blog
print chr(97) #返回參數對應的ASCII單字符的字符串 print str(97) #返回該參數的文本形式的字符串
結果:ip
aunicode
97字符串
str()和repr()區別:
print 1,str(' '),1 #對用戶比較友好的字符串形式,一般沒法用於eval()求值,通常用在print語句輸出 print 1,repr(' '),1 #對python(即機器)比較友好
結果:
1 1 1 ' ' 1
1.3測試一個對象是不是類字符串
def isExactlyAString(anobj): return type(anobj) is type('') #這是糟糕的,由於unicode的沒法經過測試,用戶本身自定義的也沒法經過測試 def isAString(anobj): return isinstance(anobj,basestring)#basestring是str和unicode的基類,但這不完美,由於有些類不是從basestring派生的,如UserString def isStringLike(anobj): try:anobj.lower()+anobj+'' #經過對參數anobj的一些String操做,來測試參數是不是類字符,較完美,但速度有影響 except: return False else: return True
1.4字符串對齊
print '|','kaluoc'.ljust(20),'|','kaluoc'.center(20),'|','kaluoc'.rjust(20),'|' #後面的參數20,總共的空格數 print 'kaluoc'.center(20,'+') #可指定填充特定字符
結果:
| kaluoc | kaluoc | kaluoc | +++++++kaluoc+++++++
1.5去除字符串兩端的空格
x=' kaluoc ' print '|',x.lstrip(),'|',x.rstrip(),'|',x.strip(),'|' x='xyxxyy kaluocyx yysx' print '|'+x.strip('xy')+'|' #僅僅去掉兩端的xy,但空格被保存下來了
結果:
| kaluoc | kaluoc | kaluoc | | kaluocyx yys|