1. 程式人生 > >python字串內建函式操作例項原始碼講解

python字串內建函式操作例項原始碼講解

#coding=utf8
'''
下面列出目前字串內建支援的方法,所有這些方法都包含了對Unicode的支援,
一些甚至是專門用於Unicode的。
----------------------------------------------------------------------------
string.capitalize() :
把字串的第一個字元大寫

string.center(width):
返回一個原字串居中,
並使用空格填充值長度width的新字串

string.count(str,beg=0, end=len(string))  :
返回str在string裡面出現的次數,
如果beg或者end指定則返回指定範圍內str出現的次數

string.decode(encoding="utf8",  errors="strict"):
以encoding指定的編碼格式解碼string,
如果預設報一個ValueError的異常,
除非errors指定的是'ignore'或者'replace'

string.encode(encoding="utf8",  errors="strict"):
以encoding指定的編碼格式編碼string,
如果預設報一個ValueError的異常,
除非errors指定的是'ignore'或者'replace'     

string.endswith(obj,beg=0,end=len(string)):
檢查字串是否以obj結束,
如果beg或者end指定則檢查指定範圍內是否以obj結束,
如果是,返回True,否則返回False

string.expandtabs(tabsize=8):
把字串string中的tab符號轉為空格,
預設的空格數tabsize是8

string.find(str,beg=0,end=len(string)):
檢測str是否包含在string中,如果beg和end指定範圍,
檢測是否包含在指定範圍內,如果是返回開始的索引值,
否則返回-1

string.index(str,beg=0,end=len(string)):
跟find()一樣,如果str不在string中會報一個異常。

string.isalnum():
如果string至少有一個字元並且所有字元都是字母或數字則返回True,否則返回False。

string.isalpha():
如果string至少有一個字元並且所有字元都是字母則返回True,否則返回False。

string.isdecimal():
如果string只包含十進位制數字則返回True,否則返回False。

string.isdigit():
如果string只包含數字則返回True,否則返回False。

string.islower():
如果string中包含至少一個區分大小寫的字元,並且所有這些字元都是小寫,則返回True。

string.isnumeric():
如果string中只包含數字字元,則返回True,否則返回False。

string.isspace():
如果string中只包含空格,則返回True,否則返回False

string.istitle():
如果string是標題化的,則返回True,否則返回False

string.isupper():
如果string中包含至少一個區分大小寫的字元,並且所有這些字元都是大寫,則返回True

string.join(seq):
Merges以string作為分隔符,將seq中所有的元素(的字串表示)合併為一個新的字串。

string.ljust(width):
返回一個原字串左對齊,並使用空格填充至長度width的新字串

string.lower():
轉換string中所有大寫字元為小寫。

string.lstrip():
截掉string左邊的空格。

string.partition(str):
有點像find()和split()的結合體,從str出現的第一個位置起,
把字串string分成一個3元素的元組(string_pre_str,str,string_post_str),
如果string中不包含str則string_pre_str==string。

string.replace(str1,str2,num=string.count(str1)):
把string中的str1替換成str2,如果num指定,則替換不超過num次。

string.rfind(str,beg=0,end=len(string)):
類似於find()函式,不過是從右邊開會查詢。

string.rindex(str,beg=0,end=len(string)):
類似於index(),不過是從右邊開始。

string.rjust(width):
返回一個原始字串右對齊,
並使用空格填充至長度width的新字串。

string.rpartition(str):
類似於partition()函式,不過是從右邊開始。

string.rstrip():
刪除string字串末尾的空格。

string.split(str="",num=string.count(str)):
以str為分隔符切片str,如果num有指定值,則僅分隔num個子字串。

string.splitlines(num=string.count("\n")):
按照行分隔,返回一個包含各行作為元素的列表,
如果num指定則僅切片num個行。

string.startswith(obj,beg=0,end=len(string)):
檢查字串是否是以obj開頭,是則返回True,
否則返回False。如果beg和end指定值,則在指定範圍內檢查。

string.strip([obj]):
在string上執行lstrip()和rstrip()

string.swapcase():
翻轉string中的大小寫

string.title():
返回“標題化”的string,就是說所有單詞都是以大寫開始,
其餘字母均為小寫。

string.translate(str,del=""):
根據str給出的表(包含256個字元)轉換string的字元,
要過濾掉的字元放到del引數中。

string.upper():
轉化string中的小寫字母為大寫。

string.zfill(width):
返回長度為width的字串,原字串string右對齊,前面填充0             
----------------------------------------------------------------------------
'''
import string
#操作要用的字串
testString="where    there is a will ,there  is a way"
testString_1="I am 45 years,I born in 1999"

#把字串的第一個字元大寫
print "--------------Call capitalize()-------------"
print testString.capitalize()
print "-----------------------------------------"
print
#呼叫center()函式,把字元居中
#並使用空格填充至長度為原字串二倍的新字串
print "--------------Call center()-------------"
print testString.center(len(testString)*2)
print "-----------------------------------------"
print
#記錄字串中ere出現的次數
#我這個版本沒有beg、end引數,只有一個str引數
print "--------------Call count()-------------"
print testString.count("ere")
print "-----------------------------------------"
print
#設定字串編碼格式
print "--------------Call encode()-------------"
print testString.encode("utf8")
print "-----------------------------------------"
print
#呼叫endswith函式
#只有一個引數suffix,沒喲引數beg、end
print "--------------Call endswith()-------------"
print testString.endswith("way")
print "-----------------------------------------"
print
#把字串中的tab符號轉為空格,
#預設的空格數tabsize是8
print "--------------Call expandtabs()-------------"
print testString.expandtabs(8)
print "-----------------------------------------"
print
#查詢str中是否包含某個人字元
#如果包含返回索引值
print "--------------Call find()-------------"
print "The first appear:",testString.find("is")
print "-----------------------------------------"
print
#呼叫index()函式
print "--------------Call index()-------------"
print "The  index of  the first appear ere :",testString.index("ere")
print "-----------------------------------------"
print
#呼叫isalnum()函式
#所有字元必須是字母或數字,不能包含其他字元
#否則為true
print "--------------Call isalnum()-------------"
print "456abc".isalnum()
print "456 abc".isalnum()
print "-----------------------------------------"
print
#呼叫isalpha()
#如果字串的所有字元都是字母則返回True
print "--------------Call isalpha()-------------"
print "abc".isalpha()
print "abc12".isalpha()
print "-----------------------------------------"
print
#呼叫isdecimal()
#如果字串只包含十進位制數則返回True
#當前版本不包含該方法
#print "89".isdecimal()

#呼叫isdigit()
#如果只包含數字則返回True
print "--------------Call isdigit()-------------"
print testString_1.isdigit()
print "1223456".isdigit()
print "-----------------------------------------"
print

#呼叫islower()
#判讀字串是否全部為小寫,如果為小寫為True
print "--------------Call islower()-------------"
print testString_1.islower()
print "1223abcde".islower()
print "-----------------------------------------"
print

#呼叫isnumeric()
#判讀字串是否全部為數字,如果為數字為True
#當前版本不包含isnumeric函式
'''
print "--------------Call isnumeric()-------------"
print testString_1.isnumeric()
print "1223.123".isnumeric()
print "-----------------------------------------"
print
'''

#呼叫isspace()
#判讀字串是否全部為空格,如果為全部為空格為True
print "--------------Call isspace()-------------"
print testString_1.isspace()
print " ".isspace()
print "-----------------------------------------"
print

#呼叫istitle()
#判讀字串是否全部為空格,如果為全部為空格為True
print "--------------Call istitle()-------------"
print "I Am Ewang ".istitle()
print "i am ewang ".istitle()
print "-----------------------------------------"
print

#呼叫isupper()
#判讀字串是否全部為大寫,如果為大寫為True
print "--------------Call isupper()-------------"
print testString_1.isupper()
print "1223ABC".isupper()
print "-----------------------------------------"
print

#呼叫join()
#把" love "加入IU中,用" love "把字元進行分開
print "--------------Call join()-------------"
print " love ".join("IU")
print "-----------------------------------------"
print

#呼叫ljust()
#字串左對齊,並用空格填充所需長度
print "--------------Call ljust()-------------"
print "love".ljust(8)
print "-----------------------------------------"
print

#呼叫lower()
#把字串轉換為小寫
print "--------------Call lower()-------------"
print "LOVE".lower()
print "-----------------------------------------"
print

#呼叫lstrip()
#去掉左邊空格
print "--------------Call lstrip()-------------"
print "LOVE  ".lstrip()
print "-----------------------------------------"
print

#呼叫partition()
#從is出現的第一個位置,把字串分成一個三元素的元組
print "--------------Call partition()-------------"
print testString.partition("is")
print "-----------------------------------------"
print

#呼叫partition()
#從is出現的第一個位置,把字串分成一個三元素的元組
print "--------------Call partition()-------------"
print testString.partition("is")
print "-----------------------------------------"
print

#呼叫replace()
#把is替換成IS,並指定替換次數為2
print "--------------Call replace()-------------"
print testString.replace("is","IS",2)
print "-----------------------------------------"
print

#呼叫rfind()
#從右邊開始查詢字串,指定開始和結束位置
print "--------------Call rfind()-------------"
print testString.rfind("is",0,34)
print "-----------------------------------------"
print

#呼叫rfind()
#從右邊開始查詢字串,指定開始和結束位置
print "--------------Call rfind()-------------"
print testString.rfind("is",0,34)
print "-----------------------------------------"
print

#呼叫rindex()
#從右邊開始查詢字串,指定開始和結束位置
print "--------------Call rindex()-------------"
print testString.rindex("is",0,34)
print "-----------------------------------------"
print

#呼叫rjust()
#字串右對齊,並使用空格填充值長度為8的新字串
print "--------------Call rjust()-------------"
print "love".rjust(8)
print "-----------------------------------------"
print

#呼叫rpartition()
#從右邊開始is出現的第一個位置,把字串分成一個三元素的元組
print "--------------Call rpartition()-------------"
print testString.rpartition("is")
print "-----------------------------------------"
print

#呼叫rstrip()
#刪除字串末尾的空格
print "--------------Call rstrip()-------------"
print testString.rstrip()
print "-----------------------------------------"
print

#呼叫split()
#根據is分隔字串,,並指定分隔符出現的次數為1
print "--------------Call split()-------------"
print testString.split("is",1)
print testString.split("is",2)
print testString.split("is",3)
print "-----------------------------------------"
print

#呼叫splitlines()
#按照行分隔,返回一個包含各行作為元素
#指定換行符\n的個數
oneDemo='''
one two three
four five six 
seven eight nine
ten eleven twleve
'''
print "--------------Call splitlines()-------------"
print oneDemo.splitlines(0)
print oneDemo.splitlines(1)
print oneDemo.splitlines(6)
print "-----------------------------------------"
print

#呼叫startswith(obj)
#檢查字串是否以obj開頭
#如果是返回True,否則返回False。
#如果指定開始和結束位置,則在指定位置檢查
print "--------------Call startswith()-------------"
print testString.startswith("is",0,20)
print testString.startswith("where",0,10)
print testString.startswith("where")
print "-----------------------------------------"
print

#呼叫strip([obj])
#刪除字串開始和結束的空格
print "--------------Call strip()-------------"
print "  someone like to eat hotdog  ".strip()
print "-----------------------------------------"
print

#呼叫swapcase()
#翻轉string中的大小寫
print "--------------Call swapcase()-------------"
print "  someone like to eat HOTDOG  ".swapcase()
print "-----------------------------------------"
print

#呼叫title()
#返回標題化的string,所有單詞都是以大寫開始
#其餘字母都是小寫
print "--------------Call title()-------------"
print "  someone like to eat hotdog  ".title()
print "-----------------------------------------"
print

#呼叫translate(str,del="")
#根據str給出的錶轉換string的字元
#要過濾掉的字元放在del引數中
print "--------------Call translate()-------------"
instr = 'someone'
outstr = '1234567'
#返回一個翻譯表
#建立一個對映,someone分別對應1234567
#由於存在重複字母,所以在對映過程中,以最新的值為準
#即:o對應5,e對應7
table = string.maketrans(instr,outstr)
astr = 'someone--1234567'
#執行translate時,someone被翻譯為:1537567
tas=astr.translate(table,"1234")
#如果相等,則兩個相等
print cmp("1537567--567",tas)
print tas
print "-----------------------------------------"
print

#呼叫upper()
#把字串變成大寫字母
print "--------------Call title()-------------"
print "  someone like to eat hotdog  ".upper()
print "-----------------------------------------"
print

#呼叫zfill(width)
#返回長度為width的字串,原字串string右對齊,前面填充0
print "--------------Call zfill()-------------"
print "  someone".zfill(10)
print "-----------------------------------------"
print