Python學習筆記1—Python字元
- 2020 年 1 月 6 日
- 筆記
字元串是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