筆記六:python2字符串運算與函數


一:學習內容

  • 字符串運算
  • 字符串函數-strip()
  • 字符串函數-大小寫互換
  • 字符串函數-字符串對齊
  • 字符串函數-搜索
  • 字符串函數-替換
  • 字符串函數-split切割
  • 字符串函數-連接join
  • 字符串函數-統計count
  • 字符串函數-字符串映射
  • 字符串函數-測試字符串

 

二:字符串運算

1. +加,拼接

a='a'

b='b'

print a+b

 

2. *星號,重復輸出字符串

print '*'*20

 

3. [],通過索引輸出字符串

a='dsafdsaf'

a[3]

 

4. [:],截取字符串

s='dsafldsal'

s[::-1]   #逆序輸出

s[2:5:2]   #輸出索引位置為2到索引位置為5的數據,不包括位置3,且步長為2,即輸出索引位置為2,4的數據即s[2],s[4]

s[-3:-6:-1]   #輸出索引位置為-3到索引位置為-6的數據,不包括位置-6,步長為-1,s字符串最右邊的位置索引為-1,往右為-2,-3..,即輸出字符串從右往左位置第3位到第5位的數據

s='abcdefghijk'

s[::2]  #偶數

s[1::2]  #奇數

s[::-1]   #逆序輸出

s[:]    #全部輸出

s[::3]   #步長為3

s[-1:-6:-1]   #倒數第一個到第5

 

5. in、not in,成員運費符包括、不包括

'a' in 'dsalla'

'c' in 'dlsaa'

'c' not in 'dsalla'

 

6. r、R-原始字符串

print r'\\'

print R'\\'

 

7. %-格式化字符串

%s為字符串

%d為數字

%cchar只能為一個字符

%ffloat,為浮點型

print 'i am %s' % 'yml'

print 'i am %s,my age is %d' % ('yml',25)

print 'i have %.2f apple' % 7.9   #保留兩位小數

print 'it is %c' % '0'

print 'i have %x apple' % 16

print 'i have %o apple' % 16

 

print 'i have %c apple' % '1'     #%c格式化字符及其ASCII

print 'i have %5s apple' % 45   #%s格式化字符串

print 'i have %2d apple' % 3    #%d格式化整數

print 'i have %u apple' % 3      #%u格式化無符號

print 'i have %o apple' % 15    #%o格式化無符號八進制

print 'i have %x apple' % 15    #%x格式化無符號十六進制數

print 'i have %.2f apple' % 15   #%f格式化浮點數,可指定小數點后的位數默認6

print 'i have %e apple' % 15    #%e科學技術法格式化浮點數

print 'i have %E apple' % 15   #%E科學技術法格式化浮點數

print 'i have %g apple' % 15    #%f%e的簡寫

 

三:字符串函數-strip()函數

1. strip()-去掉首尾不可見字符

前后包含的空格和不可見字符去掉

可以看到不僅去掉了空格還去掉了tab\r\n\t不可見字符

 

data=raw_input('請輸入一個字符串:')

data

print data

print data.strip()

 

輸入:\n\t\r fda das\t\n,輸出的效果就是去不掉\n\t等不可見字符

后來發現,raw_input輸入進來的\n\t等不可見字符存在內存中會自動加上\來避免轉義,我之前用print所以看不見那個多出來的\

這點需要注意。

 

2. lstrip()-去掉左側不可見字符

'\na   b\r'.lstrip()

 

3. rstrip()-去掉右側不可見字符

'\na   b\r'.rstrip()

 

 

3. strip('')-去掉首尾中指定字符

'*badsafd5'.strip('*')

 

四:字符串函數-大小寫互換

1. lower()-將字符串大寫轉小寫

'ABdd'.lower()

 

 

2. upper()-將字符串小寫轉大寫

'ABdd'.upper()

 

3. swapcase()-將字符串小寫轉大寫,大寫轉小寫

'ABdd'.swapcase()

 

4. capitalize()-將字符串第一個字母變大寫

'abcded'.capitalize()

'i am girl'.capitalize()

 

5. capwords()-將字符串每個單詞的首字母變大寫

import string

string.capwords('i am a girl')

 

6. title()-將字符串每個單詞的首字母變大寫,類似上面的capwords

'i am girl'.title()

'I am girl'.title()

 

五:字符串函數-字符串對齊

1. ljust(length,[s])-左對齊補齊字符串達到length的長度,不寫s默認用空補充,如果字符串本身的長度比length要長,則默認全部輸出字符串

'abc'.ljust(10)

'abc'.ljust(10,'*')

'abcsalfdsafdsfdsa'.ljust(3)

 

 2. rjust(length,[s])-右對齊補齊字符串達到length的長度,不寫s默認用空補充,如果字符串本身的長度比length要長,則默認全部輸出字符串

'abc'.rjust(5)

'abc'.rjust(5,'#')

'abcsalfdsafdsfdsa'.rjust(3)

 

3. center(length,[s])- 居中對齊補齊字符串達到length的長度,不寫s默認用空補充,如果字符串本身的長度比length要長,則默認全部輸出字符串

'abc'.center(10)

'abc'.center(10,'*')

'abcedfds'.center(5,'*')

'abcedfds'.center(5)

 

4. zfill(length)-只能填充0,參數只有一個,而且是前面補0,如果字符串本身長度比length長,則默認輸出全部字符串

'abc'.zfill(5)

'abcddddfas'.zfill(5)

'abcddddfas'.zfill(5,'*') #此法不可取,zfill只能補0不能指定字符進行補充

 

六:字符串函數-搜索

1. find(s,[start,end])-從字符串中找s的索引位置,start和end代表尋找區間,為閉開區間,找到則返回索引位置,找不到返回-1

a='test learn'

a.find('learn')

a.find('ea',5)

 

a.find('ea',5,10)

a.find('te',0,15)

a.find('xx',0,15)

 

* 小練習-在字符串找到所有滿足的字符串

lis=[]

def find_str(s,f):

    temp =0

    while f in s:

            index = s.find(f)

lis.append(index+temp)

            s = s[:index] + s[index+len(f):]

            temp+=2

    return lis

s='iamymlamtezamamamster'

f='am'

print find_str(s,f)

運行結果:在s中找到f字符串的位置

 

2. index(s,[start,end])-可在指定字符串范圍內查找字符串出現的位置,找不到返回錯誤

a='abcdefsg'

a.index('de')

a.index('de',1,45)

 

3. rfind(s,[start,end])-可在指定字符串范圍內從右邊開始查找字符串出現的位置,找不到返回-1,如果查找的字符串有多個,則會找到從右邊開始第一出現的位置

a='abcdefsg'

a.rfind('g')

a.rfind('j',0)

a.rfind('e',1,6)

a=’iamymlamlearning’

a.find(‘am’)

a.rfind(‘am’)

find是從左邊開始找發現am的位置為1rfind是從右邊開始找,位置為6

 

七:字符串函數-替換

1. replace(old,new,count)-從字符串中old替換成new,count為替換次數,不寫默認全部替換

a='iamymlamleanring'

a.replace('am','*')    #全部替換

a.replace('am','*',1)  #指定替換次數

import string

string.replace(a,'am','*')  #stringreplace方法

 

2. expandtabs([tabsize])-將字符串中每個tab替換成指定tabsize的空格數量,tabsize不寫默認為8個-此函數一般不用很少用,了解即可

s='a\t\tbc'

s.expandtabs()

s.expandtabs(1)

s.expandtabs(3)

s.expandtabs(2)

 

八:字符串函數-split切割

1. split (s,count)-將字符串以s進行切割,count為切割次數,不寫默認全部切割

a.split('am')

a.split('am',1)

a.split('am',2)

 

* 輸出一個字符串的單詞個數

#encoding=utf-8

def count_string(s):

    s=s.replace(","," ").replace('!',' ')

    b=s.split()

    return len(b)

 

s='I am a boy,and   handsome!'

print count_string(s)

 

法二:

len("i am a boy,and handsom !".replace(","," ").replace("!","").split())

 

2. rsplit (s,count)-將字符串從右邊以s進行切割,count為切割次數,不寫默認全部切割

a='iamymliamlearing'

a.rsplit('am',1)

a.rsplit('am')

 

3. splitlines ([bool])-按照分隔符分隔字符串bool默認為false

a='1\n2\n'

print a.splitlines()

print a.splitlines(False)

print a.splitlines(True)

print a.splitlines(1)

 

* 統計文件有多少行內容,多少字符

#encoding=utf-8

with open("C:\\Users\\yumeiling\\Desktop\\a.txt") as fp:

    content=fp.read()

print u'行數:',len(content.splitlines())   #文件有多少行

print u'個數:',len("".join(content.splitlines()))   #文件有多少個字母

 

九:字符串函數-連接join()、統計count()

1. rule.join(list):按rule來連接list ,要求list中每項要為字符串

a=['4','s','ds']

''.join(a)

'','.join(a)

'+'.join(a)

 

2. count(s):統計字符串中s出現的次數

'abcab'.count('a')

'abcab'.count('ab')

'abcab'.count('abc')

 

九:字符串函數-字符串映射

1. translate (rule,[delstr]):將字符串按rule規則進行映射,並且可用刪除delstr字符串,默認delstr為空即不刪除,先刪除后rule

import string

s=string.maketrans('abc','def')

'iamabcgh'.translate(s)

'abcabcabc'.translate(s)

a映射成d,將b映射成e,將c映射成f

import string

rule=string.maketrans('abc','def')

'iamymliamlearingabc'.translate(s,'am')   #刪除字符串中的所有‘am’字符

 

2. str和string的區別

str是類型,string是模塊,python3以后就沒有string了,因為3都是unicode了。

 

十:字符串函數-字符串解碼和編碼

1. encode()編碼,decode()解碼

str = "this is string example....wow!!!";

str = str.encode('base64','strict');

print "Encoded String: " + str;

print "Decoded String: " + str.decode('base64','strict')

 

十一:字符串函數-測試字符串

1. startswith(s):判斷字符串是否以s開頭

a='iamymliamlearing'

a.startswith('i')

a.startswith('b')

 

2. endswith(s):判斷字符串是否以s結尾

a='iamymliamlearing'

a.endswith('b')

a.endswith('g')

 

3. isalnum ():判斷是否為字母或數字,是返回True,否返回False,且至少有一個字符

'abc2'.isalnum()

'abcd'.isalnum()

 

4. isalpha (s):判斷s是否為字母,是返回True,否返回False,且至少有一個字母

'abcd'.isalpha()

'abc3'.isalpha()

 

5. isdigit ():判斷s是否為數字,是返回True,否返回False

'abc2'.isdigit()

'442'.isdigit()

 

6. isspace ():判斷是否為空格,是返回True,否返回False,不可見字符也會返回True

'abc3 '.isspace()

' '.isspace()

'           '.isspace()

'   \r\n\t  '.isspace()

 

7. islower ():判斷是否為小寫,是返回True,否返回False,字符串中有數字不影響結果

'abc'.islower()

'abC'.islower()

 

8. isupper ():判斷是否為大寫,是返回True,否返回False,字符串中有數字不影響結果

'abC'.isupper()

'ABC'.isupper()

'ABC1234'.isupper()

 

9. istitle ():判斷每個單次的首字母是否為大寫,是返回True,否返回False

'I Am Is Yml23'.istitle()

'I Am Is yml23'.istitle()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM