python【進階】4.文本和字節序列

文章目錄

  • 1. 字符、碼位和字節表述
    • 4.1字符問題
  • 2. bytes、bytearray 和 memoryview 等二進制序列的獨特特性
  • 3. 全部 Unicode 和陳舊字符集的編解碼器
  • 4.避免和處理編碼錯誤
  • 5.處理文本文件的最佳實踐
  • 6.默認編碼的陷阱和標準 I/O 的問題
  • 7.規范化 Unicode 文本,進行安全的比較
  • 8.規范化、大小寫折疊和暴力移除音調符號的實用函數
  • 9.使用 locale 模塊和 PyUCA 庫正確地排序 Unicode 文本
  • 10.Unicode 數據庫中的字符元數據
  • 11.能處理字符串和字節序列的雙模式 API

1. 字符、碼位和字節表述

4.1字符問題

“字符串”是個相當簡單的概念:一個字符串是一個字符序列。問題出在“字符”的定義上。
在 2015 年,“字符”的最佳定義是 Unicode 字符。

Unicode 標準把字符的標識和具體的字節表述進行了如下的明確區分。
字符的標識,即碼位,是 0~1 114 111 的數字(十進制),在 Unicode 標準中以 4~6
個十六進制數字表示,而且加前綴“U+”。例如,字母 A 的碼位是 U+0041,歐元符號
的碼位是 U+20AC,高音譜號的碼位是 U+1D11E。在 Unicode 6.3 中(這是 Python 3.4
使用的標準),約 10% 的有效碼位有對應的字符。
字符的具體表述取決于所用的編碼。編碼是在碼位和字節序列之間轉換時使用的算
法。在 UTF-8 編碼中,A(U+0041)的碼位編碼成單個字節 \x41,而在 UTF-16LE
編碼中編碼成兩個字節 \x41\x00。再舉個例子,歐元符號(U+20AC)在 UTF-8 編
碼中是三個字節——\xe2\x82\xac,而在 UTF-16LE 中編碼成兩個字
節:\xac\x20。
把碼位轉換成字節序列的過程是編碼;把字節序列轉換成碼位的過程是解碼。

  • 如果想幫助自己記住 .decode() 和 .encode() 的區別,可以把字節序列想成
    晦澀難懂的機器磁芯轉儲,把 Unicode 字符串想成“人類可讀”的文本。那么,把字節
    序列變成人類可讀的文本字符串就是解碼,而把字符串變成用于存儲或傳輸的字節
    序列就是編碼。

2. bytes、bytearray 和 memoryview 等二進制序列的獨特特性

3. 全部 Unicode 和陳舊字符集的編解碼器

4.避免和處理編碼錯誤

5.處理文本文件的最佳實踐

6.默認編碼的陷阱和標準 I/O 的問題

7.規范化 Unicode 文本,進行安全的比較

8.規范化、大小寫折疊和暴力移除音調符號的實用函數

9.使用 locale 模塊和 PyUCA 庫正確地排序 Unicode 文本

10.Unicode 數據庫中的字符元數據

11.能處理字符串和字節序列的雙模式 API

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

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

相關文章

C#序列化和反序列化

序列化和反序列化我們可能經常會聽到,其實通俗一點的解釋,序列化就是把一個對象保存到一個文件或數據庫字段中去,反序列化就是在適當的時候把這個文件再轉化成原來的對象使用。我想最主要的作用有: 1、在進程下次啟動時讀取上次保…

python【進階】5.一等函數(注銷)

在 Python 中,函數是一等對象。編程語言理論家把“一等對象”定義為滿足下述條件的程 序實體: 在運行時創建能賦值給變量或數據結構中的元素能作為參數傳給函數能作為函數的返回結果 在 Python 中,所有函數都是一等對象。 5.1 把函數視作對象 >>> def d(n): ... …

進程狀態轉換(了解)

進程三個基本狀態:就緒、阻塞、運行 這個比較簡單,進程創建后進入就緒狀態、然后若CPU空閑或能打斷CPU正在執行的進程(優先級低的),那么就緒狀態轉換成運行態,運行時,進程需要用到其他資源&…

rebuild online意外終止導致ora-8104錯誤的實驗

rebuild online意外終止導致ora-8104錯誤的實驗 SQL> !oerr ora 810408104, 00000, "this index object %s is being online built or rebuilt"// *Cause: the index is being created or rebuild or waited for recovering // from the online (re)build // *Act…

關于range方法,如果你覺得python很簡單就錯了

前言:在系統學習迭代器之前,我一直以為 range() 方法也是用于生成迭代器的,現在卻突然發現,它生成的只是可迭代對象,而并不是迭代器! 1、range() 是什么? 對于 range() 函數,有幾個注…

centos下crontab的使用

1.作用使用crontab命令可以修改crontab配置文件,然后該配置由cron公用程序在適當的時間執行,該命令使用權限是所有用戶。2.格式crontab [-u user] {-l | -r | -e}3.crontab命令選項: -u指定一個用戶, -l列出某個用戶的任務計劃, -r刪除某個用戶的任務, -…

關于python3中的包operator(支持函數式編程的包)

文章目錄1.functools2.operator.itemgetter3.operator.attrgetter雖然 Guido 明確表明,Python 的目標不是變成函數式編程語言,但是得益于 operator 和 functools 等包的支持,函數式編程風格也可以信手拈來。接下來的兩節分別介紹這兩 個包。 1.functools 示例1 使用 reduce 函…

collections 中的namedtuple

文章目錄namedtuple 基本用法namedtuple特性_make(iterable)_asdict()_replace(**kwargs)_fields_fields_defaults參考:namedtuple 基本用法 Tuple還有一個兄弟,叫namedtuple。雖然都是tuple,但是功能更為強大。對于namedtuple,你…

abap 中modify 的使用

1、modify table itab from wa Transporting f1 f2 ... 表示表itab中符合工作區wa 中關鍵字的一條數據的 f1 f2字段會被wa中對應的字段值更新。 modify用于更新和新增數據,當表中沒有數據時就新增,有就修改。 2、在使用binary search 時一定要先排序&am…

python[進階] 6.使用一等函數實現設計模式

文章目錄6.1.1 經典的“策略”模式6.1.2 使用函數實現“策略”模式6.1.3 選擇最佳策略:簡單的6.1.4 找出模塊中的全部6.2 “命令”模式6.1.1 經典的“策略”模式 為抽象基類(Abstract Base Class,ABC),這么做是為了使…

2014阿里巴巴校園招聘筆試題 - 中南站

轉載于:https://www.cnblogs.com/gotodsp/articles/3530329.html

python中一些特殊方法的作用

我們先暫且稱呼為特殊方法。 單下劃線開頭(_foo)雙下劃線開頭的(__foo)雙下劃線開頭和結尾的( __foo__)代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“from xxx im…

Spring的IOC原理[通俗解釋一下]

1. IoC理論的背景 我們都知道,在采用面向對象方法設計的軟件系統中,它的底層實現都是由N個對象組成的,所有的對象通過彼此的合作,最終實現系統的業務邏輯。 圖1:軟件系統中耦合的對象 如果我們打開機械式手表的后蓋&am…

python爬蟲面試遇到的問題

文章目錄1python基礎1.1 列表生成式和生成器的區別 ?1.2 如何不用任何循環快速篩掉列表中的奇數元素 ?1.3 map和reduce的用法1.4 裝飾器的作用1.5 Python中__new__與__init方法的區別1.6 python中的設計模式1.7 lambda函數,以及它…

ubuntu18 常用命令

文章目錄卸載和安裝卸載和安裝 1.打開一個終端,輸入dpkg --list ,按下Enter鍵,終端輸出以下內容,顯示的是你電腦上安裝的所有軟件。 2.安裝 dpkg –i name.deb 安裝一個 deb 包;在終端上輸入命令sudo apt-get --purge remove 包…

以嵌入式系統設計師考試成績,開始嵌入式博客之旅

http://www.rkb.gov.cn/jsj/cms/s_contents/download/s_dt201003110106.html 轉載于:https://www.cnblogs.com/yueqian-scut/p/3952268.html

SSH框架配置及Maven使用

1.SSH框架配置 1.1. SSH框架介紹 1.2. SSH框架配置 所需資源下載: l jdk; 從Oracle官方網站:http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html下載jdk,win7是默認安裝在C:\Program Files (x86)\Java\jdk1.6.0_25路徑下…

cookie,session的區別和聯系(補充token)

文章目錄1 http為什么是無狀態的2 cookie 和session 的區別詳解3 token參考:備注: 博客文章僅限于學習,禁止商用1 http為什么是無狀態的 2 cookie 和session 的區別詳解 這些都是基礎知識,不過有必要做深入了解。先簡單介紹一下。 二者的定…

庫函數和系統調用的區別

前言 這是一對非常容易混淆的概念。對于用戶( 應用程序開發者 )來說,并不一定要嚴格區分其意義。因為在用戶看來,它們都是以C函數的形式出現的。但了解二者的區別對我們掌握整個計算機系統有很大幫助。 區別 1. 一部分庫函數實現需要使用系統調用( 如 pr…

Flask 從入門到熟悉(不敢稱為精通)

文章目錄2.1 Flask介紹及其安裝2.2 Virtualenv3.1 一個最小的應用3.2 外部課件服務器3.3 調試模式4.1 路由介紹4.2 變量規則4.3 構建URL4.4 HTTP 方法4 總結5.1 靜態文件5.2 渲染模板5.3 練習66.1 接收請求數據6.2 請求對象6.3 文件上傳6.4 Cookies6 總結77.1 重定向和錯誤7.2 …