Python基礎(chǔ)學(xué)習(xí)之三字符串操作

Python中的字符串操作大全。

1、去空格及特殊符號(hào)

s.strip().lstrip().rstrip(',')

2、復(fù)制字符串

#strcpy(sStr1,sStr2)

sStr1 = 'strcpy'

sStr2 = sStr1

sStr1 = 'strcpy2'

print sStr2

3、連接字符串

復(fù)制代碼代碼如下:

#strcat(sStr1,sStr2)

sStr1 = 'strcat'

sStr2 = 'append'

sStr1 += sStr2

print sStr1

4、查找字符

#strchr(sStr1,sStr2)

# < 0 為未找到

sStr1 = 'strchr'

sStr2 = 's'

nPos = sStr1.index(sStr2)

print nPos

5、比較字符串

#strcmp(sStr1,sStr2)

sStr1 = 'strchr'

sStr2 = 'strch'

print cmp(sStr1,sStr2)

6、掃描字符串是否包含指定的字符

#strspn(sStr1,sStr2)

sStr1 = '12345678'

sStr2 = '456'

#sStr1 and chars both in sStr1 and sStr2

print len(sStr1 and sStr2)

7、字符串長(zhǎng)度

#strlen(sStr1)

sStr1 = 'strlen'

print len(sStr1)

8、將字符串中的大小寫轉(zhuǎn)換

S.lower() #小寫?

S.upper() #大寫?

S.swapcase() #大小寫互換?

S.capitalize() #首字母大寫?

String.capwords(S) #這是模塊中的方法。它把S用split()函數(shù)分開(kāi),然后用capitalize()把首字母變成大寫,最后用join()合并到一起?

#實(shí)例:

#strlwr(sStr1)

sStr1 = 'JCstrlwr'

sStr1 = sStr1.upper()

#sStr1 = sStr1.lower()

print sStr1


9、追加指定長(zhǎng)度的字符串

#strncat(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = 'abcdef'

n = 3

sStr1 += sStr2[0:n]

print sStr1

10、字符串指定長(zhǎng)度比較

#strncmp(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = '123bc'

n = 3

print cmp(sStr1[0:n],sStr2[0:n])

11、復(fù)制指定長(zhǎng)度的字符

#strncpy(sStr1,sStr2,n)

sStr1 = ''

sStr2 = '12345'

n = 3

sStr1 = sStr2[0:n]

print sStr1

12、將字符串前n個(gè)字符替換為指定的字符

#strnset(sStr1,ch,n)

sStr1 = '12345'

ch = 'r'

n = 3

sStr1 = n * ch + sStr1[3:]

print sStr1

13、掃描字符串

#strpbrk(sStr1,sStr2)

sStr1 = 'cekjgdklab'

sStr2 = 'gka'

nPos = -1

for c in sStr1:

??? if c in sStr2:

??????? nPos = sStr1.index(c)

??????? break

print nPos

14、翻轉(zhuǎn)字符串

#strrev(sStr1)

sStr1 = 'abcdefg'

sStr1 = sStr1[::-1]

print sStr1

15、查找字符串

#strstr(sStr1,sStr2)

sStr1 = 'abcdefg'

sStr2 = 'cde'

print sStr1.find(sStr2)

16、分割字符串

#strtok(sStr1,sStr2)

sStr1 = 'ab,cde,fgh,ijk'

sStr2 = ','

sStr1 = sStr1[sStr1.find(sStr2) + 1:]

print sStr1

#或者

s = 'ab,cde,fgh,ijk'

print(s.split(','))

17、連接字符串

delimiter = ','

mylist = ['Brazil', 'Russia', 'India', 'China']

print delimiter.join(mylist)

18、PHP 中 addslashes 的實(shí)現(xiàn)

def addslashes(s):

??? d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}

??? return ''.join(d.get(c, c) for c in s)

s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"

print s

print addslashes(s)

19、只顯示字母與數(shù)字

def OnlyCharNum(s,oth=''):

??? s2 = s.lower();

??? fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'

??? for c in s2:

??????? if not c in fomart:

??????????? s = s.replace(c,'');

??? return s;

print(OnlyStr("a000 aa-b"))

20、截取字符串

str = '0123456789′

print str[0:3] #截取第一位到第三位的字符

print str[:] #截取字符串的全部字符

print str[6:] #截取第七個(gè)字符到結(jié)尾

print str[:-3] #截取從頭開(kāi)始到倒數(shù)第三個(gè)字符之前

print str[2] #截取第三個(gè)字符

print str[-1] #截取倒數(shù)第一個(gè)字符

print str[::-1] #創(chuàng)造一個(gè)與原字符串順序相反的字符串

print str[-3:-1] #截取倒數(shù)第三位與倒數(shù)第一位之前的字符

print str[-3:] #截取倒數(shù)第三位到結(jié)尾

print str[:-5:-3] #逆序截取,具體啥意思沒(méi)搞明白?

21、字符串在輸出時(shí)的對(duì)齊?

S.ljust(width,[fillchar])?

#輸出width個(gè)字符,S左對(duì)齊,不足部分用fillchar填充,默認(rèn)的為空格。?

S.rjust(width,[fillchar]) #右對(duì)齊?

S.center(width, [fillchar]) #中間對(duì)齊?

S.zfill(width) #把S變成width長(zhǎng),并在右對(duì)齊,不足部分用0補(bǔ)足

22、字符串中的搜索和替換?

S.find(substr, [start, [end]])?

#返回S中出現(xiàn)substr的第一個(gè)字母的標(biāo)號(hào),如果S中沒(méi)有substr則返回-1。start和end作用就相當(dāng)于在S[start:end]中搜索?

S.index(substr, [start, [end]])?

#與find()相同,只是在S中沒(méi)有substr時(shí),會(huì)返回一個(gè)運(yùn)行時(shí)錯(cuò)誤?

S.rfind(substr, [start, [end]])?

#返回S中最后出現(xiàn)的substr的第一個(gè)字母的標(biāo)號(hào),如果S中沒(méi)有substr則返回-1,也就是說(shuō)從右邊算起的第一次出現(xiàn)的substr的首字母標(biāo)號(hào)?

S.rindex(substr, [start, [end]])?

S.count(substr, [start, [end]]) #計(jì)算substr在S中出現(xiàn)的次數(shù)?

S.replace(oldstr, newstr, [count])?

#把S中的oldstar替換為newstr,count為替換次數(shù)。這是替換的通用形式,還有一些函數(shù)進(jìn)行特殊字符的替換?

S.strip([chars])?

#把S中前后chars中有的字符全部去掉,可以理解為把S前后chars替換為None?

S.lstrip([chars])?

S.rstrip([chars])?

S.expandtabs([tabsize])?

#把S中的tab字符替換沒(méi)空格,每個(gè)tab替換為tabsize個(gè)空格,默認(rèn)是8個(gè)

23、字符串的分割和組合?

S.split([sep, [maxsplit]])?

#以sep為分隔符,把S分成一個(gè)list。maxsplit表示分割的次數(shù)。默認(rèn)的分割符為空白字符?

S.rsplit([sep, [maxsplit]])?

S.splitlines([keepends])?

#把S按照行分割符分為一個(gè)list,keepends是一個(gè)bool值,如果為真每行后而會(huì)保留行分割符。?

S.join(seq) #把seq代表的序列──字符串序列,用S連接起來(lái)

24、字符串的mapping,這一功能包含兩個(gè)函數(shù)?

String.maketrans(from, to)?

#返回一個(gè)256個(gè)字符組成的翻譯表,其中from中的字符被一一對(duì)應(yīng)地轉(zhuǎn)換成to,所以from和to必須是等長(zhǎng)的。?

S.translate(table[,deletechars])?

# 使用上面的函數(shù)產(chǎn)后的翻譯表,把S進(jìn)行翻譯,并把deletechars中有的字符刪掉。需要注意的是,如果S為unicode字符串,那么就不支持 deletechars參數(shù),可以使用把某個(gè)字符翻譯為None的方式實(shí)現(xiàn)相同的功能。此外還可以使用codecs模塊的功能來(lái)創(chuàng)建更加功能強(qiáng)大的翻譯表。

25、字符串還有一對(duì)編碼和解碼的函數(shù)?

S.encode([encoding,[errors]])?

# 其中encoding可以有多種值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默認(rèn)值為"strict",意思是UnicodeError??赡艿闹颠€有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通過(guò)codecs.register_error注冊(cè)的值。這一部分內(nèi)容涉及codecs模塊,不是特明白?

S.decode([encoding,[errors]])

26、字符串的測(cè)試、判斷函數(shù),這一類函數(shù)在string模塊中沒(méi)有,這些函數(shù)返回的都是bool值?

S.startswith(prefix[,start[,end]])?

#是否以prefix開(kāi)頭?

S.endswith(suffix[,start[,end]])?

#以suffix結(jié)尾?

S.isalnum()?

#是否全是字母和數(shù)字,并至少有一個(gè)字符?

S.isalpha() #是否全是字母,并至少有一個(gè)字符?

S.isdigit() #是否全是數(shù)字,并至少有一個(gè)字符?

S.isspace() #是否全是空白字符,并至少有一個(gè)字符?

S.islower() #S中的字母是否全是小寫?

S.isupper() #S中的字母是否便是大寫?

S.istitle() #S是否是首字母大寫的

27、字符串類型轉(zhuǎn)換函數(shù),這幾個(gè)函數(shù)只在string模塊中有

string.atoi(s[,base])?

#base默認(rèn)為10,如果為0,那么s就可以是012或0x23這種形式的字符串,如果是16那么s就只能是0x23或0X12這種形式的字符串?

string.atol(s[,base]) #轉(zhuǎn)成long?

string.atof(s[,base]) #轉(zhuǎn)成float


這里再?gòu)?qiáng)調(diào)一次,字符串對(duì)象是不可改變的,也就是說(shuō)在python創(chuàng)建一個(gè)字符串后,你不能把這個(gè)字符中的某一部分改變。任何上面的函數(shù)改變了字符串后,都會(huì)返回一個(gè)新的字符串,原字串并沒(méi)有變。其實(shí)這也是有變通的辦法的,可以用S=list(S)這個(gè)函數(shù)把S變?yōu)橛蓡蝹€(gè)字符為成員的list,這樣的話就可以使用S[3]='a'的方式改變值,然后再使用S=" ".join(S)還原成字符串。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容