什麼是字符串?
在python中用下列符號括起來的被稱爲字符串
''、"" 、 """字符串"""、 '''字符串 '''
>>> s = ''
>>> type(s)
<class 'str'>
>>> s = ""
>>> type(s)
<class 'str'>
>>> s = """"""
>>> type(s)
<class 'str'>
>>> s = ''''''
>>> type(s)
<class 'str'>
字符串是一個不可變的對象,對字符串的操作都是複製一個字符串再進行操作的,對字符串的任何操作都是改變它的返回值:
1.capitalize() 將字符串的第一個字符轉換爲大寫
>>> s = "csdn"
>>> s.capitalize()
'Csdn'
2.center(width, fillchar)返回一個指定的寬度 width 居中的字符串,fillchar 爲填充的字符,默認爲空格。
>>> s.center(20,"-")
'--------csdn--------'
3.count(str, beg= 0,end=len(string))返回 str 在 string 裏面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
>>> s = "csdncsdncsdn"
>>> s.count("cs",0,7)
2
4.bytes.decode(encoding="utf-8", errors="strict")Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。
>>> s1 = s.encode("utf-8")
>>> s1
b'csdncsdncsdn'
>>> s1.decode("utf-8")
'csdncsdncsdn'
>>> s1
b'csdncsdncsdn'
5.encode(encoding='UTF-8',errors='strict')以 encoding 指定的編碼格式編碼字符串,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
6.endswith(suffix, beg=0, end=len(string))檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.
>>> s.endswith("n") ##默認爲開始到結尾
True
>>> s.endswith("n",0,9) ##開始到末尾的長度
False
>>> s.endswith("n",0,11)
False
>>> s.endswith("n",0,12)
True
7.starswith(suffix, beg=0, end=len(string))檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.
>>> s = "csdn123"
>>> s.startswith("c")
True
>>> s.startswith("cs")
True
>>> s.startswith("c",2,4)
False
8。find(str, beg=0, end=len(string))檢測 str 是否包含在字符串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1
>>> s = "csdn123"
>>> s.find("n")
3
>>> s.find("4")
-1
9。index(str, beg=0, end=len(string))跟find()方法一樣,只不過如果str不在字符串中會報一個異常.
>>> s = "csdn123"
>>> s.index("d")
2
>>> s.index("4")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
10.isalnum()如果字符串至少有一個字符並且所有字符都是字母或數字則返 回 True,否則返回 False
>>> s = "csdn123" ##數字和字母的組合
>>> s.isalnum()
True
>>> s = "csdn123." ##加入了其他符號
>>> s.isalnum()
False
>>> s = "csdn"##全是字母
>>> s.isalnum()
True
>>> s = "1234"##全是數字 可以看出只能排除非數字和非字母
>>> s.isalnum()
True
11。isalpha()如果字符串至少有一個字符並且所有字符都是字母則返回 True, 否則返回 False
>>> s = "csdn123" ##只能是全字母
>>> s.isalpha()
False
>>> s = "csdn"
>>> s.isalpha()
True
>>> s = "1234"
>>> s.isalpha()
False
12。isdigit()如果字符串只包含數字則返回 True 否則返回 False..
>>> s = "1234"
>>> s.isdigit()
True
>>> s = "1234s"
>>> s.isdigit()
False
13。islower()。如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False
##其中有字母,並且所有字母都是小寫的。
14isnumeric()如果字符串中只包含數字字符,則返回 True,否則返回 False
##只有數字
15isspace()如果字符串中只包含空白,則返回 True,否則返回 False.
>>> s = ""
>>> s.isspace()
False
>>> s = " "
>>> s.isspace()
True
>>> s = " 1 "
>>> s.isspace()
False
16istitle()如果字符串是標題化的(見 title())則返回 True,否則返回 False
>>> s
'nihao dajia hao'
>>> s.istitle()
False
>>> s1 = s.title()
>>> s1
'Nihao Dajia Hao'
>>> s1.istitle()
True
17.title()字符串變成title格式。每個單詞首字母大寫
>>> s = "nihao dajia hao"
>>> s.title()
'Nihao Dajia Hao'
18join(seq)以指定字符串作爲分隔符,將 seq 中所有的元素(的字符串表示)合併爲一個新的字符串
>>> ls = ["123","234","456"]
>>>>s1 = "-"
>>> s1.join(ls)
'123-234-456'
>>> s1 = "+"
>>> s1.join(ls)
'123+234+456'
19len(string)返回字符串長度
>>> s1 = "1234"
>>> len(s1)
4
20ljust(width[, fillchar]) rjust()右對齊 center()居中
返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認爲空格。
>>> s1.ljust(20,"-") ##左對齊
'1234----------------'
21lower()
轉換字符串中所有大寫字符爲小寫.
22lstrip()截掉字符串左邊的空格或指定字符。strip()清除兩側空格,rstrip()清除右側空格
>>> s = " 23131 "
>>> s.lstrip()
'23131 '
23maketrans(),和translate()一起使用,創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。
new = "123456789"
old = "abcdefghi"
table = str.maketrans(old,new)
s1 = s.translate(table) ##輸入的字符串再通過加密表進行轉換。
24max(str)返回字符串 str 中最大的字母。
>>> s = "231kadaDADSGS我的" ##根據編碼值排序
>>> max(s)
'的'
>>> min(s)
'1'
25min(str)返回字符串 str 中最小的字母。
26replace(old, new [, max])把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。
>>> s ="12312123"
>>> s.replace("1","-")
'-23-2-23'
>>> s.replace("1","-",2)
'-23-2123'
27rfind(str, beg=0,end=len(string))
類似於 find()函數,不過是從右邊開始查找.
>>> s = "123321"
>>> s.find("1")
0
>>> s.rfind("1")
5
28rindex( str, beg=0, end=len(string))類似於 index(),不過是從右邊開始.
>>> s = "123123123"
>>> s.index("12")
0
>>> s.rindex("12")
6
>>> s.rindex("12",3,7)
3
29rjust(width,[, fillchar])返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串 已經演示過
30rstrip()刪除字符串字符串末尾的空格.右邊空格
31split(str="", num=string.count(str))num=string.count(str)) 以 str 爲分隔符截取字符串,如果 num 有指定值,則僅截取 num+1 個子字符串
>>> s = "123123123"
>>> s.split("2")
['1', '31', '31', '3']
>>> s.split("23")
['1', '1', '1', '']
>>> s.split("23",2)
['1', '1', '123']
32splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一個包含各行作爲元素的列表,如果參數 keepends 爲 False,不包含換行符,如果爲 True,則保留換行符。
>>> s = "\r123321\n111\r2222"
>>> s.splitlines()
['', '123321', '111', '2222']
>>> s.splitlines(3)##包含換行符
['\r', '123321\n', '111\r', '2222']
33startswith(substr, beg=0,end=len(string))檢查字符串是否是以指定子字符串 substr 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。
>>> s.startswith("1")
True
>>> s.startswith("1",1,3)
False
>>> s.startswith("1",0,3)
True
34strip([chars])在字符串上執行 lstrip()和 rstrip()
左右空格都清空
35swapcase()將字符串中大寫轉換爲小寫,小寫轉換爲大寫
>>> s = "csdnCSDN123"
>>> s.swapcase()
'CSDNcsdn123'
36title()返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其餘字母均爲小寫(見 istitle())
>>> s = "hello i m csdn"
>>> s.title()
'Hello I M Csdn'
37translate(table, deletechars="")根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 deletechars 參數中
>>> new = "123456"
>>> old = "abcdef"
>>> str.maketrans(old,new)
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53, 102: 54}
>>> s = "aksbdsdaedf"
>>> ls = str.maketrans(old,new)
>>> s.translate(ls)
'1ks24s41546'
38upper()轉換字符串中的小寫字母爲大寫
39zfill (width返回長度爲 width 的字符串,原字符串右對齊,前面填充0
>>> s
'aksbdsdaedf'
>>> s.zfill(20)
'000000000aksbdsdaedf'
40isdecimal()檢查字符串是否只包含十進制字符,如果是返回 true,否則返回 false。
>>> s = "123231"
>>> s.isdecimal()
True
>>> s = "123231d"
>>> s.isdecimal()
False
字符串在python中十分的重要,請務必掌握以上字符串的操作。
切片,可用來切割字符串或者可迭代對象。
字符串[start:] # 從start小標位置開始切割字符串,到末尾
字符串[start:end] # 從start小標位置開始切割字符串,切去end位置,不包含end 前閉後開區間[)
字符串[start: end:step] # step表示步長,默認是1,注意:如果step爲負數,表示從右向左切取
有三個參數【start,end,step】,請通過下列實列來進行理解
python是從在負索引的。最後一個位是-1,倒數第二個是-2,以此類推
注意:切片操作,如果下標不存在,並不會報錯
>>> s = "123123123"
>>> ls = [1,2,3,4,5]
>>> ls[1:3]
[2, 3]
>>> s[2:5]
'312'
>>> s[s.find("2"):]
'23123123'
>>> s[s.find("2")::2]
'2132'
並且還提供了負索引,最後一位爲1
>>> s[-1:-4:-1]
'fed'
>>> s = "abcdef"
>>> s[-1:-4:-1]##步長爲負數
'fed'
>>> s[-1::-1]##一行代碼進行字符串的反轉#s[::-1]
'fedcba'
不知掌握如何:可適當練習下列題目:
1.去掉字符串中的所有空格
2.根據完整的路徑從路徑中分離文件路徑、文件名及擴展
名
3.獲取字符串中漢字的個數 ###!!!
4.對字符串進行加密與解密 ### 待查
5.將字母全部轉換爲大寫或小寫
6.根據標點符號對字符串進行分行
7.去掉字符串數組中每個字符串的空格
8.隨意輸入你心中想到的一個書名,然後輸出它的字符串
長度。 (len()屬性:可以得字符串的長度)
9.兩個學員輸入各自最喜歡的遊戲名稱,判斷是否一致,如
果相等,則輸出你們倆喜歡相同的遊戲;如果不相同,則輸
出你們倆喜歡不相同的遊戲。
10.上題中兩位同學輸入 lol和 LOL代表同一遊戲,怎麼辦?
11.讓用戶輸入一個日期格式如“2008/08/08”,將 輸入的日
期格式轉換爲“2008年-8月-8日”。
12.接收用戶輸入的字符串,將其中的字符進行排序(升
序),並以逆序的順序輸
出,“cabed”→"abcde"→“edcba”。
13.接收用戶輸入的一句英文,將其中的單詞以反序輸
出,“hello c sharp”→“sharp c hello”。
14.從請求地址中提取出用戶名和域名
http://www.163.com?userName=admin&pwd=123456
15.有個字符串數組,存儲了10個書名,書名有長有短,現
在將他們統一處理,若書名長度大於10,則截取長度8的
子串並且最後添加“...”,加一個豎線後輸出作者的名字。
16.讓用戶輸入一句話,找出所有"呵"的位置。
17.讓用戶輸入一句話,找出所有"呵呵"的位置。
18.讓用戶輸入一句話,判斷這句話中有沒有邪惡,如果有邪
惡就替換成這種形式然後輸出,如:“老牛很邪惡”,輸出後變
成”老牛很**”;
19.如何判斷一個字符串是否爲另一個字符串的子串
20.如何驗證一個字符串中的每一個字符均在另一個字符串
中出現過
21.如何隨機生成無數字的全字母的字符串
22.如何隨機生成帶數字和字母的字符串
23.如何判定一個字符串中既有數字又有字母
24.字符串內的字符排序(只按字母序不論大小寫)