python string模組

來源:互聯網
上載者:User

以前斷斷續續的看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)

 
('_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組合成一個字串返回。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.