国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

流暢的 Python - 3. 文本與字節(jié)

e10101 / 838人閱讀

摘要:不同編碼器編碼的相同的字符,最終的字節(jié)大小可能會(huì)不同。對(duì)于和,是由于對(duì)應(yīng)編碼不能處理字符串字節(jié)導(dǎo)致的。在另外兩個(gè)規(guī)范化形式和的首字母縮略詞中,字母表示兼容性。最后是雙模,同一函數(shù)能接受字符串和字節(jié)進(jìn)行操作。

對(duì)于字符串,我們接觸得挺多的。而編碼問(wèn)題,也不時(shí)令人頭疼的。

由于一開(kāi)始接觸的就是 Python3,所以一些在 Python2 上的編碼上的坑我沒(méi)遇到,甚至在 Python3 上都很少遇到編碼問(wèn)題,因?yàn)?Python3 默認(rèn)的編碼是 utf-8,而之前又從 Windows 轉(zhuǎn)到了 Arch,編碼問(wèn)題已經(jīng)很少遇到了。

不過(guò)還是要重新認(rèn)識(shí)一下字符與字節(jié)。字節(jié)可由指定字符串編碼得到,是不可變類(lèi)型。使用下標(biāo)獲取字節(jié)的值時(shí),返回的是整數(shù)。這個(gè)是沒(méi)想到的。很多適用于 str 對(duì)象的方法也適用于 bytes 對(duì)象。

struct 模塊提供了一些函數(shù)可把字節(jié)序列與其他不同的類(lèi)型互相轉(zhuǎn)換。memoryview 用于共享內(nèi)存,前面剛碰到過(guò)。

除了 utf-8 編碼,Python 還內(nèi)置了許多其他的編碼器。不同編碼器編碼的相同的字符,最終的字節(jié)大小可能會(huì)不同。

對(duì)于?UnicodeEncodeError 和?UnicodeDecodeError,是由于對(duì)應(yīng)編碼不能處理字符串 / 字節(jié)導(dǎo)致的。而?SyntaxError,則是由于沒(méi)有聲明編碼,平臺(tái)編碼不能處理對(duì)應(yīng)模塊的 .py 文件。

在處理文件文件時(shí),建議是指定編碼打開(kāi)或?qū)懭耄蝗豢绮僮飨到y(tǒng)運(yùn)行腳本可能會(huì)出錯(cuò)。

之后,講到了規(guī)范化 Unicode 字符串。之前是一直沒(méi)想過(guò)這樣的問(wèn)題,一些特殊字符,該怎么搜索?這里給出了答案,那就是使用?unicodedata.normalize 函數(shù)提供的

Unicode 規(guī)范化。它有四個(gè)參數(shù):NFCNFDNFKCNFKD

?NFC(Normalization Form C)使用最少的碼位構(gòu)成等價(jià)的字符串,而?NFD 把組合字符分解成基字符和多帶帶的組合字符。

在另外兩個(gè)規(guī)范化形式(NFKC 和 NFKD)的首字母縮略詞中,字母 K 表示“compatibility”(兼容性)。

一般使用 NFC 保存字符串。后兩種轉(zhuǎn)換會(huì)有格式損失,但在搜索中卻很有用。

還有就是大小寫(xiě)折疊,不僅僅是忽略大小寫(xiě),而且把其他一些符號(hào)改變。書(shū)上還介紹了一規(guī)范化——把變音符號(hào)去掉。

對(duì) Unicode 字符的排序,可使用 key 關(guān)鍵字參數(shù)獲得我們想要的排序結(jié)果。之后就是 Unicode 數(shù)據(jù)庫(kù),里面保存了各種關(guān)于 Unicode 的消息。

最后是雙模 API,同一函數(shù)能接受字符串和字節(jié)進(jìn)行操作。

書(shū)上很多問(wèn)題都沒(méi)怎么遇到,也沒(méi)想到會(huì)這么復(fù)雜,不過(guò)相信以后會(huì)接觸到的。慢慢消化吧。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41583.html

相關(guān)文章

  • 流暢python讀書(shū)筆記-第四章 編碼問(wèn)題

    摘要:處理文本的最佳實(shí)踐是三明治要盡早把輸入例如讀取文件時(shí)的字節(jié)序列解碼成字符串。這種三明治中的肉片是程序的業(yè)務(wù)邏輯,在這里只能處理字符串對(duì)象。 處理文本的最佳實(shí)踐是Unicode 三明治 要盡早把輸入(例如讀取文件時(shí))的字節(jié)序列解碼成字符串。 這種三明治中的肉片是程序的業(yè)務(wù)邏輯,在這里只能處理字符串對(duì)象。 在其他處理過(guò)程中,一定不能編碼或解碼。 對(duì)輸出來(lái)說(shuō),則要盡量晚地把字符串編碼成字...

    leone 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路23-文本字節(jié)序列

    摘要:字符編碼表,碼位碼元將編碼字符集中的碼位轉(zhuǎn)換成有限比特長(zhǎng)度的整型值的序列。字符編碼方案,碼元序列化也稱(chēng)為常說(shuō)的序列化。每個(gè)字節(jié)里的二進(jìn)制數(shù)就是字節(jié)序列。另一個(gè)情況則是壓縮字節(jié)序列的值,如或進(jìn)程長(zhǎng)度編碼等無(wú)損壓縮技術(shù)。 《流暢的Python》筆記。本篇主要講述不同編碼之間的轉(zhuǎn)換問(wèn)題,比較繁雜,如果平時(shí)處理文本不多,或者語(yǔ)言比較單一,沒(méi)有多語(yǔ)言文本處理的需求,則可以略過(guò)此篇。 1. 前言 ...

    anRui 評(píng)論0 收藏0
  • 流暢python讀書(shū)筆記-第一章Python 數(shù)據(jù)模型

    摘要:第一章數(shù)據(jù)類(lèi)型隱式方法利用快速生成類(lèi)方法方法通過(guò)下標(biāo)找元素自動(dòng)支持切片操作可迭代方法與如果是一個(gè)自定義類(lèi)的對(duì)象,那么會(huì)自己去調(diào)用其中由你實(shí)現(xiàn)的方法。若返回,則會(huì)返回否則返回。一個(gè)對(duì)象沒(méi)有函數(shù),解釋器會(huì)用作為替代。 第一章 python數(shù)據(jù)類(lèi)型 1 隱式方法 利用collections.namedtuple 快速生成類(lèi) import collections Card = collec...

    tomener 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<