0005-20180422-自動化第六章-python基礎學習筆記 ...
day6
內容回顧:
1. 變數
2. 條件
3. while迴圈
4. 數據類型
- int
- bit_length
- bool
- True/False
- str
- upper
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal
- list
- append
- insert
- reverse
- tuple
-
- dict
- get
- items
- keys
- values
5. for
6. range
7. 編碼
ascii
unicode
utf-8
gbk
8. else
if xxx:
pass
else:
pass
while True:
pass
else:
pass
for item in xxx:
pass
else:
# 當可迭代對象中的元素,被迴圈完畢後執行一次
pass
例題:
while True:
for k in dic:
if 'k' in k:
del dic[k] #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值
break
else: #for迴圈結束的標誌----使用else
break
print(dic)
while True:
for k in dic:
if 'k' in k:
del dic[k] #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值
break
break
print(dic)
今日內容:
1. 數據類型
- bytes -----gbk,utf-8,..編碼
表現形式:name = b"alex"
name = b'\xe6\xb5\xb7\xe5\xa8\x87' #海嬌 #如果有中文表現形式為16進位字元
內部原理:utf-8或gbk...
- upper
***bytes 里的功能同str一樣,只是表現形式不同而已***
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal
- int
- bit_length
- to_bytes ,將數字轉換為位元組類型,6表示用多少個位元組表示,little/big用於指定生成位元組的順序
val = 66
#電腦硬體CPU處理的大端,小端
result=val.to_bytes(6,'big')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
print(result)
#b'\x00\x00\x00\x00\x00B'
val = 66
#電腦硬體CPU處理的大端,小端
result=val.to_bytes(6,'little')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
print(result)
#b'B\x00\x00\x00\x00\x00'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係
- from_bytes #將位元組再轉換為數字
val = 2
result=val.to_bytes(6,'little')
print(result)
#將位元組再轉換為數字:
data = int.from_bytes(result,'little')
print(data)
#b'\x02\x00\x00\x00\x00\x00'
#2
- bool
- True/False
- str ----unicode編碼 #py3中預設 name = "alex" --->網路傳輸或存硬碟則轉換為位元組:name = b"alex"
表現形式:name = "alex"
name = '海嬌' # 海---占4個位元組的01,嬌---占4個位元組的01
內部原理:unicode
示例:
# a = "alex" 通過gbk編碼在硬碟或網路傳輸中的01查看
a = "alex".encode('gbk')
for i in a:
print(bin(i))
# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# 0b1100001
# 0b1101100
# 0b1100101
# 0b1111000
name = "海嬌".encode('gbk')
for i in name:
print(bin(i))
D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
0b10111010
0b10100011
0b10111101
0b10111111
name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('utf-8') #轉換為utf-8編碼後6個位元組
print(name_tytes)
# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# b'\xe6\xb5\xb7\xe5\xa8\x87'
name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('gbk') #轉換為gbk編碼後4個位元組
print(name_tytes)
# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# b'\xba\xa3\xbd\xbf'
#二進位列印字元串以utf-8編碼的字元------海嬌----在記憶體中的二進位編碼
name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後4個位元組
for i in name_tytes:
print(bin(i))
# b'\xe6\xb5\xb7\xe5\xa8\x87'
# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# 0b11100110
# 0b10110101
# 0b10110111
# 0b11100101
# 0b10101000
# 0b10000111
name_str = "查顯忠" #預設unicode編碼格式12個位元組
name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後9個位元組
print(name_tytes)
for i in name_tytes:
print(bin(i))
D:\Install-File\python-work\venv\Scripts\python.exe D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
b'\xe6\x9f\xa5\xe6\x98\xbe\xe5\xbf\xa0'
0b11100110
0b10011111
0b10100101
0b11100110
0b10011000
0b10111110
0b11100101
0b10111111
0b10100000
- upper
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal
- encode('utf-8或gbk') #把字元串轉換為位元組
示例:
name = "海嬌"
#把unicode編碼的字元串,轉換為utf-8編碼的位元組:
v1 = name.encode('utf-8')
#把unicode編碼的字元串,轉換為gbk編碼的位元組:
v2 = name.encode('gbk')
print(v1)
print(v2)
# b'\xe6\xb5\xb7\xe5\xa8\x87'
# b'\xba\xa3\xbd\xbf'
#以上utf-8和gbk編碼的海嬌互相不認識
- casefold #可以轉換所有語種的大寫轉小寫
- list
- append
- insert
- reverse
- tuple
-
- dict
- get
- items
- keys
- values
a、位元組和字元串相關:
記憶體:unicode編碼的0101
硬碟:utf-8 gbk gb2312編碼的0101
本質上,記憶體中都是01010101,具體是什麼樣子的01,需要根據編碼來決定。
不同編碼的0101,互相不認識。
a = "alex"
python3:
utf-8 -> 010100101
特殊的:
字元串:
表現上:a = "alex"
# ()本質是unicode編碼的010101
位元組:bytes
表現:a = b"alex"
本質:010101,某種編碼:utf-8,gbk,...
總結:
python3
str --> unicode
bytes --> gbk,utf-8,...
2. 文件操作
=============================腳本==========================
刪除字典中帶K字元的鍵值對腳本:
1 #刪除字典中帶k字元的鍵值對 2 """ 3 #方法1: 4 dic = { 5 'k1':'v1', 6 'y2':'v1', 7 'k11':'v1' 8 } 9 #把key重新創建一份 10 key_list = [] 11 for k in dic: 12 #print(k) 13 key_list.append(k) 14 #迴圈所有的key 15 for key in key_list: 16 #print(key) 17 if 'k' in key: 18 del dic[key] 19 print(dic) 20 """ 21 22 """ 23 #方法2 24 dic = { 25 'k1':'v1', 26 'y2':'v1', 27 'k11':'v1' 28 } 29 30 while True: 31 for k in dic: 32 if 'k' in k: 33 del dic[k] #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值 34 break 35 else: #for迴圈結束的標誌----使用else 36 break 37 print(dic) 38 39 """ 40 41 42 """ 43 #方法3 44 45 dic = { 46 'k1':'v1', 47 'y2':'v1', 48 'k11':'v1' 49 } 50 51 for key in list(dic.keys()): 52 if 'k' in key: 53 del dic[key] 54 print(dic) 55 """
設置for迴圈完畢的條件腳本:
1 #設置for迴圈完畢的條件: 2 3 li = [11,22,33,44,55] 4 for item in li: 5 print(item) 6 else: 7 print('for-迴圈完畢')
數據類型補充知識相關腳本:
1 """ 2 # a = "alex" 通過gbk編碼在硬碟或網路傳輸中的01查看 3 a = "alex".encode('gbk') 4 for i in a: 5 print(bin(i)) 6 7 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py 8 # 0b1100001 9 # 0b1101100 10 # 0b1100101 11 # 0b1111000 12 13 """ 14 15 """ 16 name = "海嬌".encode('gbk') 17 for i in name: 18 print(bin(i)) 19 # D: / Install - File / python - work / auto - chapter6 / 3 - data -class -supplement.py 20 # 0b10111010 21 # 0b10100011 22 # 0b10111101 23 # 0b10111111 24 25 """ 26 27 """ 28 name_str = "海嬌" #預設unicode編碼格式8個位元組 29 name_tytes = name_str.encode('utf-8') #轉換為utf-8編碼後 30 31 print(name_tytes) 32 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py 33 # b'\xe6\xb5\xb7\xe5\xa8\x87' 34 """ 35 36 """ 37 name_str = "海嬌" #預設unicode編碼格式8個位元組 38 name_tytes = name_str.encode('gbk') #轉換為gbk編碼後4個位元組 39 40 print(name_tytes) 41 42 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py 43 # b'\xba\xa3\xbd\xbf' 44 """ 45 46 """ 47 name_str = "海嬌" #預設unicode編碼格式8個位元組 48 name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後4個位元組 49 for i in name_tytes: 50 print(bin(i)) 51 52 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py 53 # 0b11100110 54 # 0b10110101 55 # 0b10110111 56 # 0b11100101 57 # 0b10101000 58 # 0b10000111 59 """ 60 61 """ 62 name_str = "查顯忠" #預設unicode編碼格式8個位元組 63 name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後4個位元組 64 print(name_tytes) 65 for i in name_tytes: 66 print(bin(i)) 67 68 # D:\Install-File\python-work\venv\Scripts\python.exe D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py 69 # b'\xe6\x9f\xa5\xe6\x98\xbe\xe5\xbf\xa0' 70 # 0b11100110 71 # 0b10011111 72 # 0b10100101 73 # 0b11100110 74 # 0b10011000 75 # 0b10111110 76 # 0b11100101 77 # 0b10111111 78 # 0b10100000 79 80 """ 81 82 """ 83 name = "海嬌" 84 85 #把unicode編碼的字元串,轉換為utf-8編碼的位元組: 86 v1 = name.encode('utf-8') 87 #把unicode編碼的字元串,轉換為gbk編碼的位元組: 88 v2 = name.encode('gbk') 89 print(v1) 90 print(v2) 91 92 # b'\xe6\xb5\xb7\xe5\xa8\x87' 93 # b'\xba\xa3\xbd\xbf' 94 #以上utf-8和gbk編碼的海嬌互相不認識 95 """
數據類型整數補充相關知識腳本:
1 ##################int########### 2 """ 3 val = 9 4 result = val.bit_length() #二進位位所占的最大長度 5 print(result) 6 """ 7 8 """ 9 val = 2 10 result=val.to_bytes(3,'big') 11 print(result) 12 b'\x00\x00\x02' 13 """ 14 15 """ 16 val = 2 17 result=val.to_bytes(6,'big') 18 print(result) 19 #b'\x00\x00\x00\x00\x00\x02' 20 """ 21 22 """ 23 val = 66 24 #電腦硬體CPU處理的大端,小端 25 result=val.to_bytes(6,'big')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little) 26 print(result) 27 #b'\x00\x00\x00\x00\x00B'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係 28 29 #idle測試輸出如下: 30 # >>> bin(66) 31 # '0b1000010' 32 # >>> 33 34 """ 35 36 """ 37 val = 66 38 #電腦硬體CPU處理的大端,小端 39 result=val.to_bytes(6,'little')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little) 40 print(result) 41 #b'B\x00\x00\x00\x00\x00'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係 42 """ 43 44 val = 2 45 result=val.to_bytes(6,'little') 46 print(result) 47 48 #將位元組再轉換為數字: 49 data = int.from_bytes(result,'little') 50 print(data)
數據類型字元串補充相關知識腳本:
1 ##########str########## 2 #str 3 """ 4 name = 'alEx' 5 result = name.casefold()#β在法語里通通過casefold轉為小寫ss 6 #casefold可以轉換所有語種的大寫轉小寫 7 print(result) 8 result = name.lower()#英文字母的轉小寫 9 print(result) 10 11 name = 'β' 12 result = name.casefold() 13 print(result) 14 15 """ 16 #center---在中間的兩側分別插入指定字元,總寬度為指定寬度 17 """ 18 name = 'alEx' 19 val = name.center(20,'*') 20 print(val) 21 #********alEx******** 22 """ 23 """ 24 name = 'alE' 25 val = name.center(20,'*') 26 print(val) 27 #********alE********* 28 """ 29 30 #rjust 和 ljust 分別在右側或左側插入指定字元,總寬度為指定字元 31 """ 32 name = 'alEx' 33 val = name.ljust(20,'*') 34 print(val) 35 #alEx**************** 36 """ 37 38 """ 39 name = 'alEx' 40 val = name.rjust(20,'*') 41 print(val) 42 #****************alEx 43 """ 44 45 #count 46 name =''