Python0基礎學習--字符串

什麼是字符串?
在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.字符串內的字符排序(只按字母序不論大小寫)

以上習題答案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章