天天看點

Python零基礎學習筆記(十二)—— 字元串及其常用方法

'''
什麼是字元串
字元串就是以單引号或雙引号括起來的任意文本
'''
#建立字元串
str1 = "My name is jjking"
str2 = "I am a Little White"

'''
字元串運算
'''
#字元串連接配接
str3 = "My name is "
str4 = "jjking. "
str5 = str3 + str4
print("str5 = ",str5)

#輸入重複字元串
str6 = str5 * 3
print(str6)

#通路字元轉中的某一個字元,通過索引下标查找字元,從0開始
str7 = "My name is jjking"
print(str7[0])
print(str7[1])
print(str7[2])
print(str7[3])
#第 0 個為 M, 第1個為 y, 第 2 個是空格沒列印出來,以此類推...

#截取字元串中的一部分
str8 = "My name is jjking"
str9 = str8[0:7]    #[包含,不包含]
str10 = str8[:7]    #預設為0開始
str11 = str8[4:]    #預設截取到最後
print(str9)
print(str10)
print(str11)
#成員運算符測試jjking是否在str8 的字元串中
if "jjking" in str8:
    print("jjking 在 str8中出現了")

print("name" in str8)


#輸出格式化
num = 1
str12 = "My name is jjking."
f = 1.23
print("num = ", num, "str12 =", str12, "f =", f )
#使用%s %d %f 占位符
print("num = %d, str = %s, f = %f" % (num, str12, f))
#%3.f 表示保留小數點後3位,四舍五入法
print("f = %.3f"% f)

'''
轉義字元    \
\n  輸出 換行
\\  輸出  \
\"  輸出  "
\t  制表符
'''
print("num = %d\nstr = %s\nf = %f" % (num, str12, f))
print("num = %d\n\"str = %s\"\nf = %f\\" % (num, str12, f))
print("one\tsecond")
print("\\\t\\")
# r 字元串中有好多字元需要轉移時使用,python允許使用 r 表示内部字元串預設不轉義
# windows系統下的路徑列印常用
print(r"\\\t\\")
print(r"C:\Users\Administrator\PycharmProjects\untitled\day003")

#按照格式輸出
print('''---------------
first
second
Third
''')

str12 = "My name is jjking."
#eval(str)
#功能:将字元串str當成有效的表達式來求值并傳回計算結果
num1 = eval("123")
print(num1)
print(type(num1))
print(eval("+123"))
print(eval("-123"))
print(eval("12+3"))
print(eval("12-3"))
#len(str)
#功能:傳回字元串的長度
print(len("My name is jjking!"))
print(len(str12))
#lower() 轉換字元串中的大寫字母為小寫字母
print(str12.lower())
#upper() 轉換字元串中的小寫字母為大寫字母
print(str12.upper())
#swapcase() 大小寫互換
print(str12.swapcase())
#capitalize() 首字母大寫
print(str12.capitalize())
#title() 單詞的首字母大寫
print(str12.title())
#center(width, fillchar) 傳回指定寬度的居中的字元串用後面的字元填充
print(str12.center(30,"#"))
#ljust(width[, fillchar]) 傳回指定寬度的左對齊的字元串用後面的字元填充
print(str12.ljust(30,"*"))
#rjust(width[, fillchar]) 傳回指定寬度的右對齊的字元串用後面的字元填充
print(str12.rjust(30,"*"))
#zfill(width) 傳回指定寬度右對齊前面用 0 填充的字元串
print(str12.zfill(30))
#count([str[, start][, end]) 傳回字元串中str出現的次數,可以指定一個範圍,預設從頭到尾
print(str12.count("is"))
#find(str[, start][, end])
# 從左向右檢測str字元串是否包含在字元串中,可以指定範圍,預設從頭到尾得到的是第一次出現的開始下标,沒有傳回-1
print(str12.find("is"))
#rfind(str[, start][, end])
# 從右向左檢測str字元串是否包含在字元串中,可以指定範圍,預設從頭到尾得到的是第一次出現的開始下标,沒有傳回-1
print(str12.rfind("is"))
#index(str,start=0, end=len(str)) 和find()一樣,但在str不存在的時候會報異常
print(str12.index("is"))
#rindex(str,start=0, end=len(str)) 和rfind()一樣,但在str不存在的時候會報異常
print(str12.rindex("is"))
#lstrip() 截掉字元串左側指定的字元,要從頭開始,預設為空格
print(str12.lstrip("My"))
#lstrip() 截掉字元串右側制定的字元,,要從最後面開始,預設為空格
print(str12.rstrip("jjking."))
#split("", a) 以“ ”中的内容為分隔符截取字元串,a預設為1
print(str12.split(" "))
#splitlines([keepends]) 按照# ('\r', '\r\n', '\n')分隔
stra = ('''
My name is jjking.
I am a boy!
''')
print(stra.splitlines())
#join(seq) 以一個特定的字元串分隔符,将seq中的所有元素組合成一個字元串
strjo =["a", "s", "s"]
str_join = "##".join(strjo)
print(str_join)
#max()  傳回字元串中ascii碼值最大的
print(max(str12))
#min()  傳回字元串中ascii碼值最小的
print("$" + min(str12) + "$")
#replace(oldstr, newstr, count) 預設全部替換,如果指定了count數量,那麼隻替換前count個
str_replace = str12.replace("is", "isn't", 1)
print(str_replace)
#建立一個字元串映射表
str_maketrans = str12.maketrans("is", "nt") # i->n s->t
str13 = "P is is kjs is;"
str_translate = str13.translate(str_maketrans)
print(str_translate)
#startswith(str, start = 0, end = len(str))
#在給定的範圍内判斷是否以給定的字元串開頭的,如果沒有給定範圍,預設整個字元串
print(str12.startswith("is" ))
#endwith(str, start = 0, end = len(str))
#在給定的範圍内判斷是否以給定的字元串結尾的,如果沒有給定範圍,預設整個字元串
print(str12.endswith("is" ))
#編碼
#encode(encoding="utf-8", error="strict")
print(str12.encode())
data = str12.encode("utf-8", "ignore")
#解碼 注意:要和編碼使用的碼制一緻 python3之後沒有decode()了
str_encode = data.decode("utf-8","ignore")
print("###",str_encode, "###")
print(type(str_encode))
#isalpha()
#如果字元串中至少有一個字元且所有字元都是字母傳回True,否則傳回False
print(str12.isalpha())
#isalnum()
#如果字元串中至少有一個字元且所有字元都是字母或數字傳回True,否則傳回False
print(str12.isalnum())
#isupper()
#如果字元串中至少有一個英文字元且所有字元都是大寫字母或數字或特殊字元傳回True,否則傳回False
str_upper = "ACSD"
print(str_upper.isupper())
print("ASD1".isupper())
print("ASD1#".isupper())
#islower()
#如果字元串中至少有一個英文字元且所有字元都是小寫字母或數字或特殊字元傳回True,否則傳回False
str_upper = "acs"
print(str_upper.islower())
print("asd1".islower())
print("asd1#".islower())
#istitle()
#如果字元串是标題化的傳回True,否則傳回False
print("My name".istitle())  #錯的
print("My Name".istitle())  #對的
#isdigit()
#如果字元串隻包含數字字元傳回True,否則傳回False
print("123".isdigit())
print("ade".isdigit())  #錯的
#isnumeric()
#如果字元串隻包含數字傳回True,否則傳回False
print("123".isnumeric())
print("ade".isnumeric())    #錯的
#isdecimal()
#如果字元串隻包含十進制字元傳回True,否則傳回False
print("123".isdecimal())
print("ade".isdecimal())    #錯的
#isspace()
#如果字元串中隻包含空格則傳回True,否則傳回False
print(" ".isspace())
print("\t".isspace())
print("\r".isspace())
print("\n".isspace())   #都是對的           

執行結果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/Administrator/PycharmProjects/untitled/day003/String.py
str5 =  My name is jjking. 
My name is jjking. My name is jjking. My name is jjking. 
M
y
 
n
My name
My name
ame is jjking
jjking 在 str8中出現了
True
num =  1 str12 = My name is jjking. f = 1.23
num = 1, str = My name is jjking., f = 1.230000
f = 1.230
num = 1
str = My name is jjking.
f = 1.230000
num = 1
"str = My name is jjking."
f = 1.230000\
one	second
\	\
\\\t\\
C:\Users\Administrator\PycharmProjects\untitled\day003
---------------
first
second
Third

123
<class 'int'>
123
-123
15
9
18
18
my name is jjking.
MY NAME IS JJKING.
mY NAME IS JJKING.
My name is jjking.
My Name Is Jjking.
######My name is jjking.######
My name is jjking.************
************My name is jjking.
000000000000My name is jjking.
1
8
8
8
8
 name is jjking.
My name is 
['My', 'name', 'is', 'jjking.']
['', 'My name is jjking.', 'I am a boy!']
a##s##s
y
$ $
My name isn't jjking.
P nt nt kjt nt;
False
False
b'My name is jjking.'
### My name is jjking. ###
<class 'str'>
False
False
True
True
True
True
True
True
False
True
True
False
True
False
True
False
True
True
True
True

Process finished with exit code 0