29 Python - 字符與編碼

字符與編碼

01 字符串本質

?

?

Python字符串相關概念

字符串 ????str

字節 ??????bytes

字節數組 ??bytearray

?

電腦字符串存儲機制

字符庫:A、B每個字符有一個代碼點如A是65? B為66,這種是方便人類讀寫的形式,但是最終需要存入計算機的CPU和內存,需要轉換成字節的二進制,就涉及到字節的編碼。

字節的編碼:如A的字節編碼為b開頭的b‘A’,對應的二進制為0100 0001(激素65的二進制編碼)

因為ASCII編碼比較簡單,直接把代碼點當成二進制編碼來存儲

將字符轉換為字節的過程我們稱為編碼,反之稱為解碼;如我們最常見的ASCII編碼就是負責編碼和解碼的工作

但是后來各個國家都有字節的字符集,就出現了很多字符集合字符編碼。

不同編碼并存的解決辦法,就是unicode,但是這個長度固定,有點浪費空間。現在比較流行的就是utf8是可變字節即可變長的編碼

?

?

?

?

02 ASCII UTF8編碼

?

?

ASCII:用于常見英文字符,存在一個Byte中,0-127(即代碼點)

Python插件ASCII代碼點和字符互查的函數

?

?

?

UTF-8最通用

?

?

?

?

?

03 字節與文本的編碼 解碼

?

?

字符編碼為字節

例子:

s1位字符,

使用encode(‘指定編碼’)編碼為字節,

其中b開頭意思為字節

中文用ASCII無法編碼,需要用UTF8進行編碼

?

?

?

字節解碼為字符

例子

B1位字節碼

?????? 利用decode(‘指定編碼’)進行解碼

?

?

?

?

Python的編碼和解碼不指定的話,默認為UTF8

?

?

Python的文件操作如果不指定編碼,默認以GBK操作(以操作系統編碼為準),所以文本操作建議指定編碼

?

?

04 bytes str bytesarray之間互相轉換

在內存表現的永遠是字符串,存儲或運算過程中總以字節形式存在

?

?

?

001字符到字節

(1)利用字符的方法encode

?

?

(2)文本形式以二進制進行讀取

?

?

(3)利用字節的bytes方法——字節大小不能超過256

?

?

?

?

?

002 字節到字符

?

?

?

?

?

003 字節數組bytearray

形式

?

?

(1)字符s1存入字節數組中,利用bytearray(字符串,編碼)

?

?

(2)字節數組可以通過下標取值 ?可以改變值

?

?

(3)支持很多列表的很多方法

?

?

Append的值大小不能超過256

?

?

?

(4)字節數組轉換為字符

?

?

?

?

05 字符串BOM處理

BOM字節順序標記

?

?

?

有一個文件data.txt

?

?

打開讀取內容,想忽略字節順序標記

?

?

?

?

字節寫入文件,寫入字節順序標記

?

?

?

轉載于:https://www.cnblogs.com/yijiexi/p/11140657.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392899.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 內存管理與系統架構設計

Linux 提供各種模式(比如,消息隊列),但是最著名的是 POSIX 共享內存(shmem,shared memory)。 Linux provides a variety of schemes (such as message queues), but most notable is POSIX shar…

如何正確使用Node.js中的事件

by Usama Ashraf通過Usama Ashraf 如何正確使用Node.js中的事件 (How to use events in Node.js the right way) Before event-driven programming became popular, the standard way to communicate between different parts of an application was pretty straightforward: …

你的成功有章可循

讀書筆記 作者 海軍 海天裝飾董事長 自我修煉是基礎。通過自我學習,在預定目標的指引下,將獲取的知識轉化為個人能力,形成自我規律,不斷循環,實現成功。 尋找和掌握規律,并熟練運用于實踐,是成功…

98k用計算機圖片,98K (HandClap)_譜友園地_中國曲譜網

《98K》文本歌詞98K之歌-HandClap-抖音 制譜:孫世彥這首《HandClap》是Fitz&TheTantrums樂隊演唱的一首歌曲,同時也是絕地求生中囂張BGM,是一首吃雞戰歌!這首歌譜曲者和填詞者都是三個人:JeremyRuzumna&#xff0c…

qt之旅-1純手寫Qt界面

通過手寫qt代碼來認識qt程序的構成,以及特性。設計一個查找對話框。以下是設計過程1 新建一個empty qt project2 配置pro文件HEADERS \Find.h QT widgetsSOURCES \Find.cpp \main.cpp3 編寫對話框的類代碼例如以下://Find.h #ifndef FIND_H #define F…

【隨筆】寫在2014年的第一天

想想好像就在不久前還和大家異常興奮地討論著世界末日的事,結果一晃也是一年前的事了。大四這一年,或者說整個2013年都是場搖擺不定的戲劇,去過的地方比前三年加起來還多的多,有時候也會恍惚地不知道自己現在在哪。簡單記幾筆&…

設計沖刺下載_如何運行成功的設計沖刺

設計沖刺下載by George Krasadakis通過喬治克拉薩達基斯(George Krasadakis) Design Sprints can generate remarkable output for your company — such as a backlog of impactful ideas, functional prototypes, learning and key insights from customers along with real…

leetcode 18. 四數之和(雙指針)

給定一個包含 n 個整數的數組 nums 和一個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a b c d 的值與 target 相等?找出所有滿足條件且不重復的四元組。 注意: 答案中不可以包含重…

WPF:從WPF Diagram Designer Part 4學習分組、對齊、排序、序列化和常用功能

在前面三篇文章中我們介紹了如何給圖形設計器增加移動、選擇、改變大小及面板、縮略圖、框線選擇和工具箱和連接等功能,本篇是這個圖形設計器系列的最后一篇,將和大家一起來學習一下如何給圖形設計器增加分組、對齊、排序、序列化等功能。 WPF Diagram D…

win7如何看計算機用戶名和密碼怎么辦,win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的解決方法...

win7系統使用久了,好多網友反饋說win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的問題,非常不方便。有什么辦法可以永久解決win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的問題,面對win7系統電腦查看共享文件夾時不顯…

ASP.NET Core跨域設置

項目中經常會遇到跨域問題,解決方法: 在appsettings.json 文件中添加json項 {"Logging": {"LogLevel": {"Default": "Warning"}},"AllowedHosts": "*","AppCores": "https…

微信客戶端<->騰訊微信服務器<->開發者服務器

出自 http://blog.csdn.net/hanjingjava/article/details/41653113 首先,通過Token驗證,將公眾號接入開發者服務器,這樣客戶端發給公眾號的信息會被轉發給開發者服務器; 第二,組裝微信特定消息格式,返回給用…

idea提高調試超時_如何提高您的調試技能

idea提高調試超時by Nick Karnik尼克卡尼克(Nick Karnik) 如何提高您的調試技能 (How to Improve Your Debugging Skills) All of us write code that breaks at some point. That is part of the development process. When you run into an error, you may feel that you do…

leetcode 834. 樹中距離之和(dp)

給定一個無向、連通的樹。樹中有 N 個標記為 0...N-1 的節點以及 N-1 條邊 。第 i 條邊連接節點 edges[i][0] 和 edges[i][1] 。返回一個表示節點 i 與其他所有節點距離之和的列表 ans。示例 1:輸入: N 6, edges [[0,1],[0,2],[2,3],[2,4],[2,5]] 輸出: [8,12,6,10,10,10] 解…

CSS設計指南(讀書筆記 - 背景)

本文轉自william_xu 51CTO博客,原文鏈接:http://blog.51cto.com/williamx/1140006,如需轉載請自行聯系原作者

在計算機網絡中 帶寬是什么,在計算機網絡中,“帶寬”用____表示。

答案查看答案解析:【解析題】計算機的發展經歷了4個時代,各個時代劃分的原則是根據()。【解析題】計算機網絡的最主要的功能是______。【解析題】馮.諾依曼提出的計算機工作原理為____。【解析題】計算機的通用性使其可以求解不同的算術和邏輯問題,這主要…

如何在iOS上運行React Native應用

by Soujanya PS通過Soujanya PS 如何在iOS上運行React Native應用 (How to run a React Native app on iOS) I recently started to develop a React-Native app on iOS. This was my first foray into native app development. I was surprised by the ease and level of abs…

導出excel 后 頁面按鈕失效(頁面假死)

在 page_load 里加上如下代碼:string beforeSubmitJS "\nvar exportRequested false; \n"; beforeSubmitJS "var beforeFormSubmitFunction theForm.onsubmit;\n"; beforeSubmitJS "theForm.onsubmit function(){ \n"; …

Mysql分組查詢group by語句詳解

(1) group by的含義:將查詢結果按照1個或多個字段進行分組,字段值相同的為一組(2) group by可用于單個字段分組,也可用于多個字段分組 select * from employee; --------------------------------------------- | num | d_id | name | age | sex | homea…

leetcode 75. 顏色分類(雙指針)

給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,并按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼…