国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中的字符串操作和編碼Unicode詳解

2019-11-25 16:23:56
字體:
供稿:網(wǎng)友

本文主要給大家介紹了關(guān)于 Python中的字符串操作和編碼Unicode的一些知識,下面話不多說,需要的朋友們下面來一起學(xué)習(xí)吧。

字符串類型

str:Unicode字符串。采用''或者r''構(gòu)造的字符串均為str,單引號可以用雙引號或者三引號來代替。無論用哪種方式進行制定,在Python內(nèi)部存儲時沒有區(qū)別。

bytes:二進制字符串。由于jpg等其他格式的文件不能用str進行顯示,所以才用bytes來表示,bytes的每個字節(jié)為一個0-255的數(shù)字。如果打印的時候,Python會把能夠用ASCII表示的部分顯示為ASCII,這樣方便閱讀。bytes幾乎支持除了格式化以外的所有str的方法,甚至包括了re模塊

bytearray() :二進制可原地變動的字符串。

utf-8編碼范圍

范圍 字節(jié)數(shù) 存儲格式
0x0000~0x007F (0 ~ 127) 1字節(jié) 0xxxxxxx
0x0080~0x07FF(128 ~ 2047) 2字節(jié) 110xxxxx 10xxxxxx
0x0800~FFFF(2048 ~ 65535)  3字節(jié) 1110xxxx 10xxxxxx 10xxxxxx
0x10000~1FFFFFF(65536 ~ 2097152) 4字節(jié) 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x2000000~0x3FFFFFF 5字節(jié) 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x4000000~0x7FFFFFFF)  6字節(jié) 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

字節(jié)順序標(biāo)記BOM

BOM是byte order marker的縮寫,

指定編碼寫入時的規(guī)則

Python在使用'utf-8'編碼寫入文件時不會寫入BOM頭,但是如果指定編碼'utf-8-sig'則會迫使Python寫入一個BOM頭。

使用'utf-16-be'不會寫入一個BOM頭,但是采用'utf-16'則會寫入一個BOM頭。

>>> open('h.txt','w',encoding='utf-8-sig').write('aaa')3>>> open('h.txt','rb').read()b'/xef/xbb/xbfaaa'>>> open('h.txt','w',encoding='utf-16').write('bbb')3>>> open('h.txt','rb').read()b'/xff/xfeb/x00b/x00b/x00'>>> open('hh.txt','w',encoding='utf-16-be').write('ccc')3>>> open('hh.txt','rb').read()b'/x00c/x00c/x00c'>>> open('h.txt','w',encoding='utf-8').write('ddd')3>>> open('h.txt','rb').read()b'ddd'

讀取時的規(guī)則

如果指定了正確的編碼,那么BOM會忽略,否則BOM會顯示為亂碼或者返回異常。

>>> open('h.txt','r').read()'锘

主站蜘蛛池模板:
中宁县|
苍南县|
石河子市|
肥西县|
唐海县|
集贤县|
黔南|
苏尼特左旗|
平定县|
四子王旗|
玉屏|
西平县|
苍南县|
古浪县|
德保县|
江山市|
怀柔区|
兴业县|
驻马店市|
香河县|
三穗县|
托里县|
沽源县|
松滋市|
来宾市|
祁连县|
虹口区|
县级市|
南华县|
栾城县|
左权县|
万全县|
应用必备|
蒲江县|
巴中市|
东乌|
久治县|
正宁县|
双牌县|
铜山县|
左贡县|