一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中的字符串操作和編碼Unicode詳解

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

2020-09-18 10:30jessonsh Python

其實字符串也是一種數據類型,但是,字符串比較特殊的是還有一個編碼問題。下面這篇文章主要給大家介紹了Python中的字符串操作和編碼Unicode詳解的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。

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

字符串類型

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~0x3FFFFFF 5字節 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頭。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> 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會顯示為亂碼或者返回異常。

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

編碼與解碼

  • chr和ord
?
1
2
>>> 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編碼。

幫助函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sys.platform  #'win32'
sys.getdefaultencoding() # 'utf-8'
sys.byteorder  #'little'
s.isalnum()  #s表示字符串
s.isalpha()
s.isdecimal
s.isdigit()
s.isnumeric()
s.isprintable()
s.isspace()
s.isidentifier() #如果字符串可以用作變量名,那么返回True
s.islower()
s.isupper()
s.istitle()

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

原文鏈接:http://www.cnblogs.com/jessonluo/p/4744833.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜性色一区二区三区不卡视频 | 日本xx高清视频免费观看 | 午夜精品久久久久久 | 男女全黄h全肉细节文 | 国产短视频精品一区二区三区 | 滑进了柔佳火热紧夹的 | 久久综合给合久久狠狠狠… | 青青在线视频免费 | 精品国产国产综合精品 | 亚洲精品欧洲久久婷婷99 | 日产乱码卡一卡2卡三卡四福利 | 日韩免费观看成第15集 | 久久草福利自拍视频在线观看 | 日本视频中文字幕 | 国产拍拍拍 | 成人精品一区久久久久 | 含羞草国产亚洲精品岁国产精品 | 青青色在线 | 男人狂擦女人的下面视频 | 亚洲欧美日韩国产综合专区 | www四虎影视 | 三级欧美在线 | 国产欧美日韩不卡一区二区三区 | 国产一区二区在线免费观看 | 农村妇女野外牲交一级毛片 | 国产免费色视频 | 国产在线精品观看 | 国产精品一级香蕉一区 | 日本国产一区二区三区 | 国产自拍资源 | 欧美日韩国产在线人成 | 国产一级一级一级成人毛片 | 日韩欧美中文字幕一区 | 草莓在线 | 麻豆网页 | 免费观看一级欧美在线视频 | 狠狠搞视频 | 青青草国产免费久久久91 | 啪一啪在线视频 | 女上男下gifxxoo动态视频 | 国产午夜亚洲精品 |