目錄python
能夠用來表示姓名,愛好等git
字符就至關於一個一個的山楂,字符串至關於一個糖葫蘆。字符串就向糖葫蘆同樣將山楂,串聯起來。字符串就像是一串被串聯起來的字符,在單引號,雙引號或者三引號內包裹的一串字符。api
name1 = 'chen' name2 = "nick" print(id(name1)) print(type(name1)) print(name1) #輸出: 2793468686640 <class 'str'> chen print(id(name2)) print(type(name2)) print(name2) #輸出: 2659224937200 <class 'str'> nick
三引號內的字符串定義:spa
須要注意的是,code
==三引號內的字符是能夠換行的,換行的時候會輸出換行==索引
name3 = """chen nick """ print(name3) #輸出: chen nick name4 = '''chen nick ''' print(name4) #輸出: chen nick
#打印出來bytes,二進制類型的定義方式。 s=b'chen' print(s) print(type(s)) #輸出: b'chen' <class 'bytes'>
帶有特殊意義的符號定義字符串ip
s='ch\nen' #\n換行 print(s) print(type(s)) #輸出: ch en <class 'str'>
s='ch\ten' #\t縮進4位 print(s) print(type(s)) #輸出: ch en <class 'str'>
s='ch\ren' # 原位置打印 print(s) print(type(s)) #輸出: en <class 'str'>
s='c\nh\re\tn' print(s) print(type(s)) #輸出: c e n <class 'str'> w=r'c\nh\re\tn' #原生打印,取消特殊字符的意義 print(w) print(type(w)) #輸出: c\nh\re\tn <class 'str'>
字符串只能加(+),乘(*)以及邏輯比較ci
字符串的拼接,即從新申請一個小空間把倆個字符串都拷貝到一份後在拼接。而不是把一個小空間的變量值複製到另一個變量的小空間內,而後拼接。unicode
msg2 = "my name is 'chen'" msg3 = "my name is 'chen'" print(msg2+msg3) #輸出: my name is 'chen'my name is 'chen'
輸出:my name is 'chen'my name is 'chen'字符串
注意:==若是字符串內有引號,則包裹字符串的引號和字符串內部的引號不能相同==
name = 'chen' print(name * 10) #輸出: chenchenchenchenchenchenchenchenchenchen
注意:==字符串的乘法只能乘以數字。==
msg1 = 'hello' msg2 = 'z' print(msg1 > msg2) #輸出: False
注意:==字符串比較大小,按照ASCII碼比較,比較的是字母的順序==
按索引取值(只能取不能改變)
msg = 'hello python' print(f"索引爲6:{msg[6]}") 輸出: 索引爲6: n
切片(顧頭不顧尾)
mag = 'hello chen' ###### h e l l o c h e n ###### 0 1 2 3 4 5 6 7 8 9 從前日後的索引序號 ######-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 從後往前的索引序號 ########顧頭不顧尾 print(mag[3]) #輸出 l print(mag[:]) #輸出 hello chen print(mag[3:]) #輸出 lo chen print(mag[:3]) #輸出 hel print(mag[3:8]) #輸出lo ch print(mag[::]) #輸出hello chen print(mag[::3]) #輸出 hlcn print(mag[:3:]) #輸出 hel print(mag[3::]) #輸出 lo chen print(mag[3:8:2])# 步長位2 #輸出 l h print(mag[3:8:]) #輸出 lo ch print(mag[3::2]) #輸出 l hn print(mag[:8:2]) #輸出 hloc print(mag[-2:-5:1])#正序 #輸出 print(mag[-2:-5:-1])#倒敘 #輸出ehc print(mag[::-1]) #輸出nehc olleh
長度len
mag = 'hello chen' print(len(mag)) #輸出: 10
成員變量in or not in
mag = 'hello chen' print('hello' in mag)#判斷字符是否在字符串中 # 輸出:True print('chen' not in mag) # 輸出:False
移除空白strip(移除的字符必須在兩端)
mag= ' chenshuai ' print(mag.strip())#去掉倆邊空格 ##輸出: chen shuai mag = '&&&hello chen' print(mag.strip('&'))#指定多個字符,能夠去掉 #輸出:hello chen print('&&&hello chen'.strip('& ')) #輸出:hello chen
切分split(默認以空格切割字符串)
info="chen shuai" print(info.split())#默認以空格爲切割符 #輸出: ['chen','shuai'] ##split()選中一些符號或者字符 info = "python:male:30" list1 = info.split(":") list2 = info.split(":", 0) # 表示不切 list3 = info.split(":", 1) # 表示以':'爲切割符,只切割第一個 list4 = info.split(":", 2) # 表示以':'爲切割符,只切割前倆個 list5 = info.split(":", -1) print('list1:',list1) print('list2:',list2) print('list3:',list3) print('list4:',list4) print('list5:',list5) 輸出: list1: ['python', 'male', '30'] list2: ['python:male:30'] list3: ['python', 'male:30'] list4: ['python', 'male', '30'] list5: ['python', 'male', '30']
循環
mag = 'hello python' for i in mag: print(i) #輸出 : h e l l o p y t h o n
Istrip&rstrip
mag = '&&hello python&&' print(mag.strip('&')) print(mag.lstrip('&'))##去除首部的 print(mag.rstrip('&'))## 取出尾部的 輸出: hello python hello python&& &&hello python
lower&upper
mag = 'HELLO python' print(mag) print(mag.upper())##大寫 print(mag.lower())## 小寫 #輸出: HELLO python HELLO PYTHON hello python
startswith&endswith
mag = 'HELLO python' print(mag.startswith('HELLO'))##檢測以什麼開頭 print(mag.endswith('python'))## 檢測以什麼結尾 #輸出: True True
rsplit
## 從右邊開始切割 mag = 'hello:python:chen' print(mag.rsplit(':')) print(mag.rsplit(':',1)) #輸出: ['hello', 'python', 'chen'] ['hello:python', 'chen']
join
# 拼接 lis = [1,2,'19'] print(':'.join(lis)) # 報錯,數字不可和字符串拼接
# str之join() lis = ['chen', 'male', '19'] print(':'.join(lis)) #輸出 chen:male:19
replace
msg = 'hello chen' print(msg.replace('chen','python'))#替換 #輸出: hello python
isdigit
#檢測是否爲整數 salary = '111' print(salary.isdigit()) #輸出: True salary = '111.1' print(salary.isdigit()) #輸出: False
isalpha判斷是否爲字符
1.find()、rfind()、index()、rindex()、count()
# str之find()、rfind()、index()、rindex()、count() msg = 'my name is tank, tank shi sb, hha' print(f"msg.find('tank'): {msg.find('tank')}") # 找不到返回-1 print(f"msg.find('tank',0,3): {msg.find('tank',0,3)}") print(f"msg.rfind('tank'): {msg.rfind('tank')}") # 找不到返回-1 print(f"msg.index('tank'): {msg.index('tank')}") # 找不到報錯 print(f"msg.rindex('tank'): {msg.rindex('tank')}") # 找不到報錯 print(f"msg.count('tank'): {msg.count('tank')}") msg.find('tank'): 11 msg.find('tank',0,3): -1 msg.rfind('tank'): 17 msg.index('tank'): 11 msg.rindex('tank'): 17 msg.count('tank'): 2
2.center()、ljust()、rjust()、zfill()
# str之center()、ljust()、rjust()、zfill() print(f"'info nick'.center(50,'*'): {'info nick'.center(50,'*')}") print(f"'info nick'.ljust(50,'*'): {'info nick'.ljust(50,'*')}") print(f"'info nick'.rjust(50,'*'): {'info nick'.rjust(50,'*')}") print(f"'info nick'.zfill(50): {'info nick'.zfill(50)}") # 默認用0填充 'info nick'.center(50,'*'): ********************info nick********************* 'info nick'.ljust(50,'*'): info nick***************************************** 'info nick'.rjust(50,'*'): *****************************************info nick 'info nick'.zfill(50): 00000000000000000000000000000000000000000info nick
3.expandtabs()
擴張,只針對字符串裏面有\t的字符串
# str之expandtabs() print(f"a\\tb\\tc: %s"%('a\tb\tc\t')) # 默認製表符8個空格 print(f"'a\\tb\\tc'.expandtabs(32): %s"%('a\tb\tc\t'.expandtabs(32))) a\tb\tc: a b c 'a\tb\tc'.expandtabs(32): a b c
4.captalize()、swapcase()、title():只針對單詞
# str之captalize()、swapcase()、title() name = 'nick handsome sWAPCASE' print(f"name.capitalize(): {name.capitalize()}") print(f"name.swapcase(): {name.swapcase()}") # 大小寫互轉 print(f"name.title(): {name.title()}") name.capitalize(): Nick handsome swapcase name.swapcase(): NICK HANDSOME Swapcase name.title(): Nick Handsome Swapcase
5.is數字系列(只是爲了告訴你,判斷是否爲數字時除了中文數字之後使用isdigit()便可)
num = "1" #unicode num.isdigit() # True num.isdecimal() # True num.isnumeric() # True num = "1" # 全角 num.isdigit() # True num.isdecimal() # True num.isnumeric() # True num = b"1" # byte num.isdigit() # True num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal' num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric' num = "IV" # 羅馬數字 num.isdigit() # True num.isdecimal() # False num.isnumeric() # True num = "四" # 漢字 num.isdigit() # False num.isdecimal() # False num.isnumeric() # True =================== isdigit() True: Unicode數字,byte數字(單字節),全角數字(雙字節),羅馬數字 False: 漢字數字 Error: 無 isdecimal() True: Unicode數字,全角數字(雙字節) False: 羅馬數字,漢字數字 Error: byte數字(單字節) isnumeric() True: Unicode數字,全角數字(雙字節),羅馬數字,漢字數字 False: 無 Error: byte數字(單字節) ================ import unicodedata unicodedata.digit("2") # 2 unicodedata.decimal("2") # 2 unicodedata.numeric("2") # 2.0 unicodedata.digit("2") # 2 unicodedata.decimal("2") # 2 unicodedata.numeric("2") # 2.0 unicodedata.digit(b"3") # TypeError: must be str, not bytes unicodedata.decimal(b"3") # TypeError: must be str, not bytes unicodedata.numeric(b"3") # TypeError: must be str, not bytes unicodedata.digit("Ⅷ") # ValueError: not a digit unicodedata.decimal("Ⅷ") # ValueError: not a decimal unicodedata.numeric("Ⅷ") # 8.0 unicodedata.digit("四") # ValueError: not a digit unicodedata.decimal("四") # ValueError: not a decimal unicodedata.numeric("四") # 4.0 #"〇","零","一","壱","二","弐","三","參","四","五","六","七","八","九","十","廿","卅","卌","百","千","萬","萬","億"
6.is其餘
4.存一個值or多個值:一個值
5.有序or無序:只要是有索引的,都是有序的,所以字符串是有序的。
name = 'nick' print(f'first:{id(name)}') name = 'nick handsome' print(f'second:{id(name)}') first:4377100160 second:4377841264
6.可變or不可變:不可變數據類型