python3 字符編碼與轉碼的理解


額。。。上通識課講到了NLP12條,感覺講的挺好的,照着抄一條先。。。

1,沒有兩個人是一樣的

  沒有兩個人的人生經驗會完全一樣,所以沒有兩個人的信念,價值和規條系統會是一樣。

  因此沒有兩個人對同一件事的看法能夠絕對一致。

  因此沒有兩個人對同一件事的反應會是一樣的。

  因此沒有兩個人的態度和行為模式會完全一樣。

  因此發生在一個人身上的事,不能假定發生在另一個人身上也會有一樣的結果。

  人與人之間的不同,建造了這個世界的奇妙可貴。

  尊重別人的不同之處,別人才會尊重自己獨特的地方。

  每一個人的信念,價值觀和規條系統都是在不斷演變中,所以沒有一個人在兩分鍾是一樣的。

  兩個人的信念,價值觀和規條不一樣,不一定會使兩個人不能溝通或發展出良好關系。

  給別人空間也就是尊重別人的信念,價值觀和規條,才能有良好的溝通和關系。

  同樣地,自己與別人的看法不同,也是正常的事。

  當尊重別人的信念,價值觀和規條的同時,我們也有權力要求別人尊重自己的信念,價值觀和規條。

相當有道理哈。。。   


 

 

補個文件操作方法: 對於總是忘記關文件這一問題 最好用:

with open("file_name", "r", encoding= "utf-8") as f1, \

   open("file_name2", "r", encoding= "utf-8") as f2:

  一系列操作。。。。 

這操作我喜歡!

然后還補個修改文件內容的方法:

本質上來說是不可能修改文件內容的,講道理可以把文件從硬盤里拉到內存,比如用vim然后在內存里修改內容,這可以,但你搞個大文件內存就爆了,不好。

真正說來,修改文件其實是在寫一份。。。一行一行的讀源文件,不改的就寫道新文件里,到了要改的內容就把它給改了再寫道新文件里。。。。。就是這么操作的!如下所示:

 1 #!usr/bin/env/ python
 2 # -*- coding:gbk -*-
 3 # Author: XiaoFeng
import sys
4 find_str = sys.argv[1]
replace_str = sys.argv[2] # 原來sys.argv是這么用的。。。 在窗口界面操作給他賦值
5 with open("file_old", "r", encoding= "utf-8") as f1, \ 6 open("file_new", "w", encoding= "utf-8") as f2: 7 for line in f1: # 這里f1就相當於迭代器了 是啥我也不知道,但是輸出一行是證實了的 8 if "fin_str" in line: # 找到有"est"的那一行 9 line = "replace_str" #把這行直接從寫 10 f2.write(line)

 

 

今天只學了編碼解碼。。。課多啊從早到晚  媽耶 

首先得知道萬國碼unicode 最牛逼的 兼容萬國啊   中文,英文都是兩字節

其次是utf-8  中文的  英文一字節,因為包括的就是ASCLL碼  但中文三字節 中國人有錢,人性  所以utf-8是長度可變的編碼    

還有個gbk編碼 windows上用的把。。。

不同的文件用不同編碼在不同的地方當然就打不開啦

所以 通用法就是 先解碼成 中介:unicode  然后再編碼成能是別的就行了 

學個操作: sys.getdefaultencoding()  獲取系統默認編碼 我的python3里設置的是utf-8

奇葩的是 在程序里的 數據類型 卻是unicode   搞不懂。。。。。。

一下是聯系的草稿。。。。。。。。。。。。。。。沒搞太懂哦

 1 #!usr/bin/env/ python
 2 # -*- coding:gbk -*-
 3 # Author: XiaoFeng
 4 import sys
 5 
 6 
 7 #   上面的聲明作用是告訴python3這是個gbk編碼的文件 然后python就知道它是啥文件了,然后就把它解碼成unicode
 8 print(sys.getdefaultencoding())  # 結果顯示我這個 python3程序的默認編碼是utf-8
 9 s = "哈哈哈"  # 這里又不一樣了,管你啥文件編碼,python3程序里 數據類型 就是是unicode編碼
10 print(s)  # 所以這里可以直接輸出中文
11 
12 print("-" * 50)
13 s_utf8 = s.encode("utf-8")   # 注意Py3里 只會轉成字節型
14 print(s_utf8)
15 print(s_utf8.decode())  # decode()   想要輸出漢字還得decode一下才行(奇葩)
16 
17 print("-" * 50)
18 s_gbk = s.encode("gbk")  # 把數據類型從unicode變成gbk
19 print(s_gbk)
20 # 現在是gbk編碼 想輸出中文,那得變成py3的 utf-8
21 # 所以先把gbk解碼為unicode 然后再編碼為utf-8
22 # decode()括號里要告訴unicode我是啥 decode()括號里要告訴unicode我想變成啥
23 # 注意Py3里 encode()只會轉成字節型 想要輸出中文還得decode()一下才行
24 print(s_gbk.decode("gbk").encode().decode())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM