1. 程式人生 > 其它 >字元編碼與文字操作

字元編碼與文字操作

目錄

字元編碼

什麼是字元編碼
# 只跟文字檔案和字串有關,與其他無關,由於計算機內部識別二進位制,但是使用者在使用計計算機的時候卻可以看到各式各樣的語言字元。
# 字元編碼:內部紀律了人類字元與數字對應關係的資料

字元編碼的發展史

# 1.一家獨大
計算機最初是由美國人發明,美國人為了能夠讓計算機識別英文字元,搞出來ASCII碼
ASCII碼:記錄了英文字元與數字對應的關係,用一個位元組來對應關係
# 英文字元和符號加起來不超過127 ,使用八位是為了後續發現新的語言無法新增.
"""0 = 48 , a = 97 , A = 65"""
# 2.群雄割據
中國:為了能夠讓計算機識別中文 我們需要發明另外一套編碼表:GBK碼
記錄了英文中文與數字的對應關係
		對於英文還是使用一個位元組
		對應中文使用兩個位元組甚至更多位元組
"""兩個位元組不夠表示出所有的中文,遇到生僻字可能需要更多位來表示"""
# 3. 天下一統
為了能夠實現不同國家之間的文字資料能夠彼此無障礙交流需要對編碼統一
unicode(萬國碼)
統一使用兩個及以上字元記錄字元與數字的對應關係
# utf8  目前使用最多

ASCII碼

插圖 !!!

編碼實操作

1如何解決檔案亂碼情況
# 檔案最開始用什麼編碼編寫,開啟也需要以對應的編碼解

2.python直譯器版本不同也有編碼差異
python2.x內部使用的編碼預設是AXCII
# 檔案頭:coding:utf8
# 在python2中定義字串前面要加一個小u
  s = u'junjie'
  python3.中內部使用utf8 
  """
自定義檔案模板內容
	file
		settings
			Editor
				file and code templates
					python script
"""
3.編碼和解碼
編碼:將人類能夠讀懂的字元安裝指定的編碼轉換成數字
解碼:將數字按照指定的編碼轉換成人類能夠讀懂的字元
    s = '每天不要想太多 學就完事了 幹就完了 奧利給!!!'
    # 編碼
    # res = s.encode('utf8')
    # print(res, type(res))  # bytes  在python中直接將該型別看成二進位制資料即可
    # 解碼
    # res1 = res.decode('utf8')
    # print(res1) 

檔案操作

1.什麼是檔案?
檔案其實是作業系統暴露給使用者操作硬碟的的介面
2.程式碼如何操作檔案
# 關鍵字 open()
三步走:
  1.利用關鍵字open開啟檔案
  2.利用其他方法操作檔案
  3.關閉檔案
 """
 檔案路徑:相對路徑和絕對路徑
 路徑中出現祖母與斜槓組合產生特殊含義,取消方式:
 在路徑字串的前面加一個r
 r'D:\py20\day08\a.txt'
 
 """
open('a.txt')
open(r'D:\py20\day08\a.txt')
res = open('a.txt', 'r', encoding='utf8')
print(res.read())
res.close()  # 關閉檔案釋放資源
"""
open(檔案路徑,讀寫模式,字元編碼)
    檔案路徑與讀寫模式是必須的
    字元編碼是可選的(有些模式需要編碼)
"""
# with上下文管理(能夠自動幫你close())
with open(r'a.txt','r',encoding='utf8') as f1:  # f1=open() f1.close()
    print(f1.read())
"""以後程式碼操作檔案 推薦使用with語法"""

檔案讀寫模式

# 不全語法,沒有實際含義   pass:
r : 只讀模式(只能看不能改)
注意:如果路徑不存在,直接報錯
  with open(r'b.txt', 'r', encoding='utf8') as f:
    				pass
路徑存在: with open(r'a.txt', 'r', encoding='utf9') as f:
    				print(f.read())  # 讀取檔案所有內容
 					  f.write('123')   # 寫檔案內容
        
w : 只寫模式(只能寫不能看)
路徑不存在:路徑不存在自動建立
# with open (r'b.txt', 'w', encoding='utf8') as f:
			 pass
# 路徑存在:1.先清空檔案內容 2. 再執行寫入操作
with open(r'a.txt', 'w', encoding='utf8') as f:
  	# f.read()
    f.write('hello world!\n')
    f.write('hello world!\n')
    f.write('hello world!\n')
只追加內容

溜了溜了