Python學習筆記1—Python字元

    字元串是python中重要的數據對象

    python字元串是以單引號、雙引號、或者三個三單引號三個雙引號包含的任意的python數據對象都可以稱為python字元串

    注意:以單引號或雙引號包含的數據對象中間不可以換行(若需要換行需要用轉義字元n),三個單引號或三個雙引號可以包含多行的數據對象。

一、轉義符

    在任何的語言里都有轉義符這樣的概念存在,轉義符是讓含有特殊意義的字元失去特殊的意義,按照普通的形式列印。

    例如我們需要列印出某個文件的路徑

print 'c:notetakes.txt'

    執行結果為

c:  ote	akes.txt

    這並不是我們想要的結果,這時需要用轉義字元,使n和t這些含有特殊意義的字元失去本身的意義,才會按照正確的格式列印出來。

print 'c:\note\takes.txt'

    執行結果為

c:notetakes.txt

    也可以在字元串前面添加「r」使接下來的整個字元串中的特殊字元失去特殊的意義。

print r'c:notetakes.txt'

二、字元串分片操作(游標)

    字元串是有序的序列

    索引開始從0開始,結束為-1

    分片操作包含索引開始值,但是不包含終止值,通常是終止值減1

    字元串變數[游標]:返回當前游標所對應的字元。

    字元串變數[開始游標,結束游標,步長]:開始游標指截取字元串的開始下標;結束游標指截取字元串的結束下標;步長是指游標的間隔數。

        注意:截取的結果包括開始游標不包括結束游標;開始游標可以省略,省略默認為0;結束游標可省,省略默認為截取到字元串末尾;步長可省,省略默認為1。

a='0123456789'  print a[1]  print a[-2]  print a[2:4]  print a[2:8:2]  print a[:7:2]  print a[2:7:]  print a[2::]

    執行結果為

1  8  23  246  0246  23456  23456789

三、字元串方法

    字元串方法是針對字元串的操作,方法已經定義並封裝,使用簡化操作和程式碼重寫

    1.字元串填充方法

      center(width[,fillchar])

        字元串在指定長度內居中

      ljust(width[,fillchar])

        字元串在指定長度內靠左對齊

      rjust(width[,fillchar])

        字元串在指定長度內靠右對齊

      zfill(width)

        zfill()即是以字元0進行填充,在輸出數值時比較常用

        width:寬度表示字元在什麼寬度內居中,該數值包括字元串本身的長度,若指定的長度小於字元串本身的長度,該方法不會生效

        fillchar:可選參數,表示以什麼字元填充空白部分,默認是空格。

        注意:若指定的長度過大,運行窗口一行放不下時會換行顯示,影響顯示效果。

a='0123456789'  print a.center(50,'*')  print a.ljust(50,'*')  print a.rjust(50,'*')  print '1'.zfill(2)  print '10'.zfill(2)

    執行結果為

********************0123456789********************  0123456789****************************************  ****************************************0123456789  01  10

      expandtabs([tabsize])

        expandtabs()的tabsize 參數默認為8。它的功能是把字元串中的製表符tab轉換為適當數量的空格。

        注意:

        tabsize參數包括從該製表符到它的上一個製表符的所有字元;

        若tabsize的值小於等於該製表符到它的上一個製表符的所有字元,則顯示的空格數是(x*tabsize-該製表符到它的上一個製表符的所有字元數);

        若tabsize的值大於該製表符到它的上一個製表符的所有字元,則顯示的空格數是(tabsize-該製表符到它的上一個製表符的所有字元數).

a='123twfdsftadfsd'  b='012345678901234567890'  print b  print a.expandtabs(3)  print a.expandtabs(2)  print a.expandtabs(4)  print a.expandtabs(7)

    執行結果為

012345678901234567890  123   wfdsf adfsd  123 wfdsf adfsd  123 wfdsf   adfsd  123    wfdsf  adfsd

    2.字元串刪減方法

      strip()函數族用以去除字元串兩端的空白符

      strip([chars])    去掉字元串兩端的指定的符號

      rstrip([chars])    去掉字元串右端的指定的符號

      lstrip([chars])    去掉字元串左端的指定的符號

        chars:可省參數,表示要去掉的字元,可以是多個字元,省略默認為空格。

a='     adfasdff      '  print a.strip()  print a.lstrip()  print a.rstrip()  a='**********adfadsfasdfasd**********'  print a.strip('*')  print a.lstrip('*')  print a.rstrip('*')  a='*!*!*!*!*!adfadsfasdfasd*!*!*!*!'  print a.strip('*!')  print a.lstrip('*!')  print a.rstrip('*!')

    執行結果為

adfasdff  adfasdff             adfasdff  adfadsfasdfasd  adfadsfasdfasd**********  **********adfadsfasdfasd  adfadsfasdfasd  adfadsfasdfasd*!*!*!*!  *!*!*!*!*!adfadsfasdfasd

    3.字元串變形方法

      lower()        將字元串轉換為小寫

      upper()        將字元串轉換為大寫

      capitalize()    首字母大寫

      swapcase()     大小寫之間轉換

      title()        單詞首字母大寫(按空格等間隔符來區分單詞,不能區分單詞拼寫是否正確)

a='Hello World,Python!'  print a.lower()  print a.upper()  print a.capitalize()  print a.swapcase()  print a.title()  a='hello world,python!'  print a.capitalize()  print a.title()

    執行結果為

hello world,python!  HELLO WORLD,PYTHON!  Hello world,python!  hELLO wORLD,pYTHON!  Hello World,Python!  Hello world,python!  Hello World,Python!

    4.字元串切分方法

      splitlines([keepends])返回一個列表,將字元串按行n分隔.keepends:可選參數,若為True,會在列表中分割的子串中顯示換行符n;若為False不顯示.默認為False。

      split([sep[,maxsplit]])返回一個列表,將字元串按某個字元從左向右分隔

      rsplit([sep[,maxsplit]])返回一個列表,將字元串按某個字元從右向左分隔分隔

        sep:可選參數,按指定的字元分隔字元串,默認按空格、換行、製表符等符號分隔

        maxsplit:可選參數,指定分隔的次數,默認是分隔全部的字元串。

        split和rsplit在不指定maxsplit參數的情況下是完全相同的效果。

a='hello world python ni am comming nabc123'  print a.splitlines()  print a.splitlines(True)  print a.split()  print a.split(' ')  print a.split(' ',4)  print a.rsplit()  print a.rsplit(' ')  print a.rsplit(' ',4)

    執行結果為

['hello world python ', 'i am comming ', 'abc123']  ['hello world python n', 'i am comming n', 'abc123']  ['hello', 'world', 'python', 'i', 'am', 'comming', 'abc123']  ['hello', 'world', 'python', 'ni', 'am', 'comming', 'nabc123']  ['hello', 'world', 'python', 'ni', 'am comming nabc123']  ['hello', 'world', 'python', 'i', 'am', 'comming', 'abc123']  ['hello', 'world', 'python', 'ni', 'am', 'comming', 'nabc123']  ['hello world python', 'ni', 'am', 'comming', 'nabc123']

    5.字元串連接方法

      join(seq)將字元串的值插入到seq參數提供的字元串中

        join() 函數的高效率(相對於循環相加而言)使它成為最值得關注的字元串方法之一

print '123'.join('abcdef')  print 'Hello'.join('|||')

    執行結果為

a123b123c123d123e123f  |Hello|Hello|

    6.字元串判斷方法

      isalnum()判斷是否為字母或數字,不包含其他字元,若是字母或數字返回True

      isalpha()判斷是否為字母,若是字母,返回True

      isdigit()判斷是否為數字,若是數字,返回True

      islower()判斷字元串中的字母是否全部為小寫,若是,返回True

      isupper()判斷字元串中的字母是否全部為大寫,若是,返回True

      isspace()判斷是否是空格,若是空格,返回True

      istitle()判斷首字母是否是大寫,若是,返回True

print 'python!123'.isalnum(),'python123'.isalnum()  print 'Python123'.isalpha(),'Python'.isalpha()  print 'python123'.isdigit(),'123'.isdigit()  print 'python'.islower(),'python123'.islower(),'Python'.islower(),'PYTHON'.islower()  print 'PYTHON'.isupper(),'PYTHON123'.isupper(),'Python'.isupper(),'python'.isupper()  print '   '.isspace(),'  python'.isspace()  print 'Python good'.istitle(),'python Good'.istitle(),'Python Good'.istitle()

    執行結果為

False True  False True  False True  True True False False  True True False False  True False  False False True

      startswith(prex[, start[, end]])判斷字元串是否是以prex參數的值開始的,若是,返回True。

      endswith(sux[,start[, end]])判斷字元串是否是以sux參數的值結束的,若是,返回True。

        start:可省參數,指定字元串的開始游標,省略默認為0

        end:可省參數,指定字元串的結束游標,省略默認為截取到字元串結尾。

print 'Python123'.startswith('p'),'Python123'.startswith('P'),'Python123'.startswith('Py')  print 'Python123'.startswith('th',2),'Python123'.startswith('h',3,5)  print 'Python123'.endswith('123'),'Python123'.endswith('3')  print 'Python123'.endswith('on',2,6),'Python123'.endswith('123',4)

    執行結果為

False True True  True True  True True  True True

    7.字元串查找方法

      count( sub[, start[, end]])統計sub參數在字元串中出現的次數

      find( sub[, start[, end]])查找sub參數在字元串中首次出現的位置,若沒找到,返回-1

      index( sub[, start[, end]])查找sub參數在字元串中首次出現的位置,若沒找到,報錯

        start參數和end參數與startswith()方法的start,end參數使用方法相同。

a='012345678901234567890123456789'  print a.count('3'),a.count('23',4,14)  print a.find('3'),a.find('23',14,24),a.find('e')  print a.index('3'),a.index('23',14,24),a.index('e')

    執行結果為

3 1  3 22 -1  3 22    Traceback (most recent call last):    File "C:UsersAdministratorDesktop123.py", line 4, in <module>      print a.index('3'),a.index('23',14,24),a.index('e')  ValueError: substring not found

    8.字元串替換方法

      replace(old, new[,count])將字元串中old的值替換為new的值。

        replace()函數的 count 參數用以指定最大替換次數

a='012345678901234567890123456789'  print a.replace('1','q'),a.replace('1','q',2)  print a.replace('123','qw'),a.replace('123','qw',2)

    執行結果為

0q234567890q234567890q23456789 0q234567890q234567890123456789  0qw4567890qw4567890qw456789 0qw4567890qw4567890123456789

    9.字元串編碼方法

      encode([encoding[,errors]])加碼

      decode([encoding[,errors]])解碼

        這是一對互逆操作的方法,用以編碼和解碼字元串。因為str是平台相關的,它使用的內碼依賴於作業系統環境,而unicode是平台無關的,是Python內部的字元串存儲方式。unicode可以通過編碼(encode)成為特定編碼的str,而str也可以通過解碼(decode)成為unicode