[Python3] 009 字符串:給你們看看我的內置方法 第一彈
目錄
- 前言
- 如何查看 python3 中和 str 有關的方法
- 字符串方法
- 1. capitalize()
- 2. casefold()
- 3. center(width)
- 4. count(sub[, start[, end]])
- 5. endswith(sub[, start[, end]])
- 6. find(sub[, start[, end]])
- 7. index(sub[, start[, end]])
- 8. isalnum()
- 9. isalpha()
- 10. isascii()
- 11. isdecimal()
- 12. isdigit()
前言
大家好,我是字符串。YorkFish 介紹了這麽多有關列表的信息,我找他談了談,最終在我的命(ken)令(qiu)下,他答應具體介紹一些我“團隊中的朋友”(內置方法)給大家認識。
如何查看 python3 中和 str 有關的方法
dir(str)
—— 列舉和str
有關的方法- 其中帶下劃線的如
__add__
是魔法方法,還沒學到,暫時不做解釋 - 從
capitalize
開始,到zfill
為止,是今天的“硬菜”
- 其中帶下劃線的如
help(str)
—— 列舉並簡要介紹和str
有關的方法help(str.capitalize)
—— 單獨查看str
的某個方法(方法後不加括號)
字符串方法
- 我數了一下,
Python3.7
有 45 個除魔法方法以外的方法。一次寫完有點傷身體,我決定養生一點,分三篇吧。
1. capitalize()
- 釋義:把字符串的第一個字符改為大寫(原本就大寫,則忽略),其余改為小寫(原本就小寫,也忽略)
- 示例
# 例1.1
name1_1 = "YorkFish" # 註意大小寫
name1_2 = "yorkFish"
name1_3 = "YorkFish"
name1_4 = "yorkfish"
naem1_5 = "123YorkFish"
print(name1_1.capitalize())
print(name1_2.capitalize())
print(name1_3.capitalize())
print(name1_4.capitalize())
print(name1_5.capitalize())
- 運行結果
Yorkfish
Yorkfish
Yorkfish
Yorkfish
123yorkfish
從結果看,並不是從第一個字母開始操作,而是從第一個字符開始操作。
# 例1.2 接例1.1
print(name1_1.capitalize) # capitalize 後沒帶括號
- 運行結果
<built-in method capitalize of str object at 0x000001DCB0384030>
括號不能漏。
2. casefold()
- 釋義:將整個字符串的字符改為小寫
- 示例
# 例2
name2 = "YorkFish"
print(name2.casefold())
- 運行結果
yorkfish
3. center(width)
- 釋義:
width
為自定義的一段長度(通常要比字符串長),讓字符串在這段長度裏居中,其余位置用空格填充。 - 示例
# 例3
name3 = "123YorkFish"
print(1, name3.center(30), 1)
- 運行結果
1 123YorkFish 1
Markdown 格式下,空格不直觀,請看下方截圖:
4. count(sub[, start[, end]])
- 計數君
count()
在[Python3] 006
中出現過,這次更詳細 - 釋義:
[]
裏的參數可用可不用sub, start, end
在這裏都是代號sub
表示要計數的字符(查了一下詞典,sub
有替身之意)start
表示開始位置,若沒設置,默認為開頭end
表示結束的位置,若沒設置,默認為結尾
- 示例
# 例4
str4 = "Actions speak louder than words."
print(str4.count(‘A‘))
print(str4.count(‘A‘, 1))
print(str4.count(‘a‘, 8, 12)) # 相當於把索引範圍縮小到 speak 上
- 運行結果
1
0
1
從結果看,1. 區分大小寫;2. 從 0 開始索引。
5. endswith(sub[, start[, end]])
- 釋義:檢查字符串是否以
sub
子字符串結束,若是,返回True
;若不是,返回False
。可用start
與end
自定義範圍。 - 示例
# 例5
str5 = "Winter has come, can spring be far behind?"
print(str5.endswith(‘?‘))
print(str5.endswith(‘far behind?‘))
print(str5.endswith(‘Winter has come, can spring be far behind?‘))
print(str5.endswith("come", 12, 15)) # 12 到 15 剛好是 come
print(str5.endswith("come", 11, 15))
print(str5.endswith("e, c", 15, 18)) # 15 到 18 剛好是 e, c
print(str5.endswith("e, c", 14, 18))
print(str5.endswith(‘e‘, 12, 15))
- 運行結果
True
True
True
False
True
Flase
True
True
從結果看,1. 可以查單個字符、多個字符,甚至是本體;2. 中間的某一段不能查這段本身。
6. find(sub[, start[, end]])
- 釋義;尋找字符串中是否包含
sub
子字符串。若有,返回索引值;若無,返回 -1 。 - 示例
# 例6
str6 = "Kid, happiness is a very simple matter; grow up, simple is a very happy thing! "
print(str6.find("is"))
print(str6.find("is", 40))
print(str6.find("simple", 15, 40))
print(str6.find("thing", 15, 40))
- 運行結果
15
56
25
-1
7. index(sub[, start[, end]])
- 索引君
index()
在[Python3] 006
中出現過,這次更詳細 - 釋義:跟
find()
的用法僅一點不同:若索引不到,會報錯(產生一個異常)。 - 示例
# 例7
str7 = "Kid, happiness is a very simple matter; grow up, simple is a very happy thing! "
print(str7.index("simple", 15, 40))
print(str7.index("thing", 15, 40))
- 運行結果
25
ValueError:……substring not found
8. isalnum()
- 釋義:若一個非空字符串中所有的字符都是字母或數字,返回
True
;若否,返回False
。 - 示例
# 例8
name8_1 = "YorkFish2019"
name8_2 = "YorkFish 2019" # 比 name8_1 多了一個空格
name8_3 = ‘‘ # 空字符串
name8_4 = "YorkFish②?①⑨" # YorkFish 後面是帶圈的數字 2019
print(name8_1.isalnum())
print(name8_2.isalnum())
print(name8_3.isalnum())
print(name8_4.isalnum())
- 運行結果
True
False
False
True
若釋義中沒有“非空字符串”的限制,也說得通:空字符串中包含的不是字母或數字,所以返回 False
。
數字除了 0-9
,還包括帶圈的 0-9
。
9. isalpha()
- 釋義:若一個非空字符串中所有的字符都是字母,返回
True
;若否,返回False
。 - 示例
# 例9
name9_1 = "YorkFish"
name9_2 = "YorkFish2019"
name9_3 = "魚"
name9_4 = "??"
print(name9_1.isalpha())
print(name9_2.isalpha())
print(name9_3.isalpha())
print(name9_4.isalpha())
- 運行結果
True
False
True
True
說是字母,但我輸入漢字,也顯示 True
。而且,我自作聰明地找了幾個編碼靠後漢字,如“??”,都返回 True
。
又得挖坑了,日後學到“編碼”來填平,編號 Py009-1
。
10. isascii()
- 釋義:
- 若字符串內均是
ASCII
,返回True
;否則,返回Flase
。 ASCII
字符的代碼點的範圍是U+ 0000000 -U+007F
(即編碼占用 0 - 127 這些地址)。- 空字符串也屬於
ASCII
。
- 若字符串內均是
- 示例
# 例10
‘‘‘
str10_1 = ‘‘
str10_2 = ‘ ‘
str10_3 = "123"
str10_4 = "0b10010"
str10_5 = "\765"
str10_6 = "0xfe"
str10_7 = "\x7d"
str10_8 = "!@#$%"
str10_9 = "你好"
我感覺我的思路錯了,然後我找來一個“幫手”—— chr()
chr(i, /)
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
返回一個 Unicode 字符,其中 i 的範圍是 0 <= i <= 0x10ffff。
‘‘‘
#print(chr(-1).isascii()) 會報錯
print(chr(0).isascii())
print(chr(100).isascii())
print(chr(127).isascii())
print(chr(128).isascii())
print(‘‘.isascii()) # 沒有空格,內容為空
- 運行結果
True
True
True
False
True
11. isdecimal()
- 釋義:若字符串中只包含十進制數字,返回
True
;否則,返回False
。 - 示例
# 例11
str11_1 = "YorkFish2019"
str11_2 = "2019"
str11_3 = "0xfe"
print(str11_1.isdecimal())
print(str11_2.isdecimal())
print(str11_3.isdecimal())
- 運行結果
False
True
False
12. isdigit()
- 釋義:若字符串中只包含數字,返回
True
;否則,返回False
。 - 示例
# 例12
str12_1 = "YorkFish2019"
str12_2 = "2019"
str12_3 = "0o765"
str12_4 = "\765"
str12_5 = "0xfe"
str12_6 = "\xfe"
str12_7 = "10010" # 看著像二進制,其實還是十進制
str12_8 = "0b10010"
str12_9 = "②"
print(str12_1.isdecimal())
print(str12_2.isdecimal())
print(str12_3.isdecimal())
print(str12_4.isdecimal())
print(str12_5.isdecimal())
print(str12_6.isdecimal())
print(str12_7.isdecimal())
print(str12_8.isdecimal())
print(str12_9.isdecimal())
- 運行結果
False
True
False
False
False
False
True
False
False
說好的數字呢?怎麽二進制、八進制、十六進制不行?連帶圈的數字都不行!
所以這裏的意思是說 0~9
,沒別的。
[Python3] 009 字符串:給你們看看我的內置方法 第一彈