標籤:ide 最好 sde cap 修改 執行個體 height sla pad
基礎篇
本章大綱:
字元編碼和解譯器編碼詳解 變數命名規則 基礎資料類型(一) int 基礎資料類型(二) string 基礎資料類型(三) bool 基礎資料類型(四) list
基礎資料類型(五) tuple 基礎資料類型(六) dict
基礎資料類型(七) set 補充可迭代對象的迴圈串連及enumerate輸出 字元編碼和解譯器編碼詳解
一,編碼的重要性:1.1 檔案編碼和字元編輯編碼及讀取編碼
#!/usr/bin/env python#-*- coding:utf-8 -*-with open(‘acsii_01‘,‘a+‘,encoding=‘utf-8‘) as f: f.write(‘李傑‘+‘\n‘)with open(‘acsii_01‘,‘r‘,encoding=‘utf-8‘) as f: data = f.read() print(data)
總結:
註明: 對待file操作的編碼問題。註明檔案的編碼可以是任何編碼格式。但是寫入的編碼必須和讀取的編碼一致。其實這就涉及到檔案儲存體編碼問題了。下面我們可以二進位的格式讀取file看看不同的編碼格式的在檔案中儲存的方式:
另外如果讀取檔案的時候使用到時rb模式。就不需要指定encoding。encoding的作業就是當你的file操作的編碼不是utf-8(python3字元操作的預設編碼是utf-8),就需要你指定讀取檔案的為指定的編碼了。
#!/usr/bin/env python#-*- coding:utf-8 -*-with open(‘acsii_01‘,‘rb‘) as f: data=f.read() print(‘acsii‘,data)with open(‘acsii_02‘,‘rb‘) as f: data=f.read() print(‘utf-8‘,data)with open(‘acsii_03‘,‘rb‘) as f: data=f.read() print(‘gbk‘,data)with open(‘acsii_04‘, ‘rb‘) as f: data = f.read() print(‘unicode‘, data)
總結:
字元編碼注意讀寫的編碼要一直。另外檔案操作的file編碼和讀寫的編碼其實關係。只要是你寫入的編碼和讀取的編碼一致就可以正常讀取檔案。建議檔案操作的時候指定檔案讀寫的編碼。當然如果是讀取的mode是rb的話,就沒有必要去指定編碼格式了。 其次字元編碼和python解譯器編碼是不同的。python解譯器的編碼是作用於編譯python過程去讀取生產位元組碼。字元編碼是對字元操作的。 變數命名規則 一,變數的命名規則: 1,不能以字母開頭 2,不能以內建變數相同。 3,不能以特殊含義的字元開頭
基礎資料類型(一) int 一,整形
a=1
基礎資料類型(二) string 二,string的常用方法如下:
#字串首字母大小。其他的字母小寫s=‘alxE\ttianTao3‘data=s.capitalize()print(data)#轉換成小寫。針對unicode所有的字元data=s.casefold()print(data)#轉換成小寫。只針對ASCII 內的A-Z轉換#可以包含特殊字元%,@data=s.lower()print(data)str1=‘Alex$%@‘data=str1.lower()print(data)#置中填充#20為長度。*為填充的字元,可以nonedata=s.center(20,‘*‘)print(data)#統計字元。可以指定其實index和結束indexdata=s.count(‘a‘,0,-1)print(data)#指定編碼errors=no 忽略報錯data=s.encode(encoding=‘utf-8‘,errors=‘no‘)print(data)print(‘@@@@@@@@@@@@@@@@@‘)#以指定的字元結尾data=s.endswith(‘ao‘)print(data)#以指定的字元開始data=s.startswith(‘al‘)print(data)#去掉定位字元\t.#0是指從起始位置到定位字元長度。長度不夠空白填充。#另外注意長度最好指定。預設有一個長度print(s)data=s.expandtabs(0)print(data,len(data),len(s),len(‘alEx ‘))#尋找字串#返回查到的第一個字串的起始index,可以指定start,enddata=s.find(‘a‘)print(data)#字串格式化輸出data=‘輸出%s‘ %(s)print(data)data=‘輸出{a}‘.format(a=s)print(data)data=‘輸出{a}‘.format_map({‘a‘:s})print(data)#尋找字串的index.#顯示字串起始index。可以指定start,enddata=s.index(‘al‘)print(data)#isalnum檢測字串是否有字母和數字組成str1=‘alextian2‘data=str1.isalnum()print(data)#isalpha是否為英文字母str1=‘alextian‘data=str1.isalpha()print(data)#是否是數字isdecimalstr1=‘22222‘data=str1.isdecimal() #只能判斷純數字print(data)str1=‘2222①‘data=str1.isdigit() #可以判斷特殊的數字print(data)str1=‘2222①二‘data=str1.isnumeric() #可以判斷特殊的數字print(data)#isidentifier測試是不是有效變數str1=‘2ceshi‘data=str1.isidentifier()print(data)str1=‘ceshi‘data=str1.isidentifier()print(data)#是否是小寫字元str1=‘zaddd‘data=str1.islower()print(data)str1=‘aaddd%‘data=str1.islower()print(data)#isprintable是否有影含的換行 定位字元 \n \r\n \tstr1=‘alex tian‘data=str1.isprintable()print(data)str1=‘alex\n tian‘data=str1.isprintable()print(data)str1=‘alex\t tian‘data=str1.isprintable()print(data)str1=‘alex tian‘data=str1.isprintable()print(data)#isspace是否全部是空格str1=‘ ‘data=str1.isspace()print(data)#istitle是否是標題#每個單字首大寫str1=‘Alex Shangshan‘data=str1.istitle()print(data)#迴圈串連所有可迭代str1=‘alex‘data=‘_‘.join(str1)print(data)#左填充右填充str1=‘alex‘data=str1.rjust(20,‘*‘)print(data)#移除空格或者換行str1=‘ alex ‘data=str1.strip()#對應和翻譯m = str.maketrans(‘al‘,‘@@‘)str1=‘alex tian‘data=str1.translate(m)print(data)#以字元界限分割str1=‘alex‘data=str1.partition(‘l‘)print(data)data=str1.split(‘l‘)print(data)#去掉內部的分行符號str1=‘alex\ntian‘data=str1.splitlines()print(data)#指定尋找替換和替換個數str1=‘alex‘data=str1.replace(‘a‘,‘A1‘,1)print(data)#字串轉小寫.大寫轉小寫。小寫轉大寫str1=‘AlEx‘data=str1.swapcase()print(data)#小寫轉大寫str1=‘alex‘data=str1.upper()print(data)#標題str1=‘Alex tiantao‘data=str1.title()print(data)#從左邊用0填充字串str1=‘alex‘data=str1.zfill(20)print(data)
字串切片上章節
基礎資料類型(三) bool 三,bool類型的值和判斷規則
print(bool(1))print(bool(0))print(bool(-1))
總結:
‘‘‘
總結 bool類型
0為假 非0為真
空位假 非空為真 (字元和對象都可以判斷)
‘‘‘
基礎資料類型(四) list 四,list方法總結
#####################################list################################注意列表是可變元素故此有一些方法或者屬性可以直接在列表上操作。或者有傳回值#添加列表元素list1=[]v=list1.append(‘alex‘)print(v)print(list1)#清空列表元素v=list1.clear()print(v)print(list1)#淺copy元素#淺拷貝,只拷貝了父物件,不會拷貝父物件中的子物件;deepcopy 是深拷貝,可以認為是完全的複製過去了;list1=[1,2,3,[1,2,3,4]]list2=list1.copy()list1[-1][0]=2print(list1,list2)list1[0]=2print(list1,list2)#count計數list1=[1,2,3,4,5,5]data=list1.count(5)print(data)#extend擴充list1=[1,2,3,4,5,5]data=list1.extend([1,2,3,4])print(data)print(list1)#index索引list1=[1,2,3,4,5,5]data=list1.index(5)print(data)#insert指定index位置插入list1=[1,2,3,4,5,5]data=list1.insert(2,[4,3,4])print(list1)#pop彈出一個元素.可以指定indexlist1=[1,2,3,4,5,5]data=list1.pop(2)print(list1)#remove移除指定元素list1=[1,2,3,4,‘5‘,‘5‘]data=list1.remove(‘5‘)print(list1)#reverse翻轉listlist1=[1,2,3,4,‘5‘,‘5‘]data=list1.reverse()print(list1)#sort排序list1=[1,2,3,4,5,5]data=list1.sort()print(list1)list1=[1,2,3,4,5,5]data=list1.sort(reverse=True)print(list1)
基礎資料類型(五) tuple
五,元祖類執行個體化方法如下:
#index通過value找indextuple1=(1,2,3,4)data=tuple1.index(3)print(data)#count統計valuetuple1=(1,2,3,4)data=tuple1.count(2)print(data)
基礎資料類型(六) dict
六,字典執行個體化對象方法如下:
#clear清空dict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}dict1.clear()print(dict1)#copy淺copydict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}dict2=dict1.copy()print(dict2)#fromkeys 字典的靜態方法 迴圈list建立字典#注意key必須不可變元素。另外value修改,其他的元素也會被修改dict1=dict.fromkeys([‘v1‘,‘v2‘],123)print(dict1)#get方法擷取指定key的valuedict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.get(‘v1‘)print(data)#items返回一個可迴圈的元祖的listdict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.items()print(data)for key,value in dict1.items(): print(key,value)#keys或者字典的所有的keydict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.keys()print(data)#pop彈出一個指定索引值對,返回對應的valuedict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.pop(‘v1‘)print(data)print(dict1)#popitmes隨機彈出一個指定索引值對,返回對應的valuedict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.popitem()print(data,dict1)#setdefaul 設定添加一個元素。存在不添加dict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.setdefault(‘v3‘,‘li‘)print(data,dict1)#update更新字典dict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.update({‘v1‘:‘zhangsan‘,‘v3‘:‘lisi‘})print(data,dict1)#values擷取字典的valuesdict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}data=dict1.values()print(data,dict1)‘‘‘注意字典的key必須是不可變對象可變hash的‘‘‘
基礎資料類型(七) set
七,set集合對象執行個體化方法如下:
#add 增加一個元素set1={1,2,4,5}data=set1.add(‘6‘)print(set1)#clear清除元素set1={1,2,4,5}data=set1.clear()print(set1)#copy淺copyset1={1,2,4,5}set2=set1.copy()print(set2)#集合比較#difference set1與set2的差集。set1有的set2沒有set1={1,2,4,5}set2={1,2,3,5}data=set1.difference(set2)print(data)#difference_update把差集賦值給set1set1={1,2,4,5}set2={1,2,3,5}data=set1.difference_update(set2)print(data,set1)#discard移除元素set1={1,2,4,5}data=set1.discard(5)print(set1)#交集intersectionset1={1,2,4,5}set2={1,2,3,5}data=set1.intersection(set2)print(data)#intersection_update略#union並集set1={1,2,4,5}set2={1,2,3,5}data=set1.union(set2)print(data)#isdisjoint如果沒有交集就是Trueset1={1,2,3,5}set2={6,7}data=set1.isdisjoint(set2)print(data)#issubset判斷是不是子集set1={1,2}set2={1,2,3,5}data=set1.issubset(set2)print(data)#issuperset判斷是不是父集set1={1,2}set2={1,2,3,5}data=set2.issuperset(set1)print(data)#pop彈出一個集合元素set1={1,2}data=set1.pop()print(data)#remove移除一個元素set1={1,2}data=set1.remove(2)print(set1)#symmetric_difference對稱差集。差集的集合set1={1,2,6,7}set2={1,2,3,5}data=set1.symmetric_difference(set2)print(data)#update更新集合set1={1,2,6,7}data=set1.update({4,5,6})print(data,set1)
補充可迭代對象的迴圈串連及enumerate輸出及總結 一,可迭代對象的串連成字串 ‘‘.join()
#可迭代對象的連結及輸出str1=‘alex‘str1=‘+‘.join(a)print(str1)list1=[‘1‘,‘2‘]list1=‘+‘.join(list1)print(list1)tuple1=(‘1‘,‘2‘)tuple1=‘+‘.join(list1)print(tuple1)dict1={‘v1‘:‘alex‘,‘v2‘:‘tian‘}dict1=‘+‘.join(list1)print(dict1)set1={1,2,3}set1=‘+‘.join(set1)print(set1)
總結: 1,可迭代對象都可以用join方法去迭代連接字串 二,迴圈輸出可迭代對象
#enumerate方法返回一個[(index,enumer)]data=enumerate(list1)print(data)for line in data: print(line)data=enumerate(list1)for index,enum in data: print(index,enum)
總結: 1,注意迭代器賦值給一個對象後。如果迭代器__next__已經迴圈結束。後面的這個對象就不會再有元素能迭代了,故此迭代結束 2,enumerate方法返回一個元素是tuple的列表 [(index,enumer)]
Python 之路 Day02 -基礎資料類型及編碼詳解