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

首頁 > 學院 > 開發設計 > 正文

Python的字符串操作和Unicode

2019-11-14 17:03:50
字體:
來源:轉載
供稿:網友

字符串類型

str:Unicode字符串。采用''或者r''構造的字符串均為str,單引號可以用雙引號或者三引號來代替。無論用哪種方式進行制定,在Python內部存儲時沒有區別。
bytes:二進制字符串。由于jpg等其他格式的文件不能用str進行顯示,所以才用bytes來表示,bytes的每個字節為一個0-255的數字。如果打印的時候,Python會把能夠用ASCII表示的部分顯示為ASCII,這樣方便閱讀。bytes幾乎支持除了格式化以外的所有str的方法,甚至包括了re模塊
bytearray():二進制可原地變動的字符串。

utf-8編碼范圍

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

字節順序標記BOM

BOM是byte order marker的縮寫,

指定編碼寫入時的規則

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'

讀取時的規則

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

>>> open('h.txt','r').read()'锘縟dd'>>> open('h.txt','r',encoding='utf-8-sig').read()'ddd'

編碼與解碼

  • chr和ord

    >>> ord('中')         #20013>>> chr(20013)        #'中'
  • 把Unicode硬編碼進字符串中。
    '/xhh':用2位十六進制來表示一個字符
    '/uhhhh':用4位十六進制來表示一個字符:
    '/Uhhhhhhhh':用8位十六進制來表示一個字符
    >>> s = 'py/x74h/u4e2don' #'pyth中on'

str和bytes, bytearray進行轉換

str.encode(encoding='utf-8')
bytes(s,encoding='utf-8')
bytes.decode(encoding='utf-8')
str(B, encoding='utf-8')
bytearray(string, encoding='utf-8')
bytearray(bytes)

文檔編碼聲明

Python默認使用utf-8編碼。
# -*- coding: latin-1 -*-:表示聲明文檔為latin-1編碼。

幫助函數

sys.platform					#'win32'sys.getdefaultencoding() 		# 'utf-8'sys.byteorder					#'little's.isalnum()                     #s表示字符串s.isalpha()s.isdecimals.isdigit()s.isnumeric()s.isPRintable()s.isspace()s.isidentifier()                #如果字符串可以用作變量名,那么返回Trues.islower()s.isupper()s.istitle()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾阳县| 沾益县| 南丰县| 克拉玛依市| 杭锦旗| 乌拉特前旗| 宜川县| 漳州市| 德兴市| 板桥市| 射阳县| 咸阳市| 乌拉特前旗| 茂名市| 孝感市| 吉木乃县| 中卫市| 马山县| 沾化县| 滦平县| 琼结县| 郁南县| 凤冈县| 大安市| 紫金县| 平利县| 乡城县| 福贡县| 盘山县| 绥滨县| 仙游县| 莱州市| 天镇县| 宜春市| 哈尔滨市| 井陉县| 什邡市| 平谷区| 原阳县| 大理市| 灵川县|