日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 学习汇总41:unicode( tcy)

發布時間:2024/1/18 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 学习汇总41:unicode( tcy) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Unicode?? 2018/7/1

1.字符一般字符:'a';'嚴'; 特殊字符: 編輯器中不能直接輸入,在字符串文字中使用轉義序列 \u轉義序列編寫特定的Unicode代碼點'\u0394' # 'Δ' 16-bit hex value "\U00000394 # 'Δ' 32-bit hex value "\N{GREEK CAPITAL LETTER DELTA}" # 希臘大寫字母Delta :'Δ' répertoire = "trouvé" #可將Unicode字符包含在字符串文字,標識符中。 2.Unicode 2.1. 字符集: 只是一個“字符集”,它給每一個處于此字符集中的字符給予了一個編號。 Unicode 標準描述了如何用 代碼點 表示字符。代碼點是一個整數值通常用16 進制表示。 Unicode標準包含很多列出字符及其相應代碼點的表格:0061 'a'; LATIN SMALL LETTER A 0062 'b'; LATIN SMALL LETTER B 0063 'c'; LATIN SMALL LETTER C ... 007B '{'; LEFT CURLY BRACKET一個Unicode字符串是一系列代碼點,從0到0x10FFFF的數字。 該序列需要表示為內存中的一組字節(意思是從0到255的值)。 將Unicode字符串轉換為字節序列的規則稱為編碼。 ord('a') # 97hex(ord("嚴"))= '0x4e25' #"嚴"unicode代碼點=4E25ord('\u0394') #等價于:ord('Δ') #返回代碼點值:=916逆轉換:chr(916) #等價于:chr(0x394) #10進制的916=16進制的394 #返回單字符'Δ'chr(97) #等價于:chr(0x61) #10進制的97=16進制的61 #返回單字符'a' 2.2.編碼方案 utf-8指定字符以什么字節序存儲和傳輸將Unicode字符串轉換為字節序列的規則稱為編碼。編碼一定,字節序一定,存儲結果是肯定要落實到字節(Bytes)上來的。 編碼:'a'.encode('utf-8') # b'a' 返回Unicode字符串的bytes"嚴".encode() #b'\xe4\xb8\xa5''Δ'.encode('utf-8') # b'\xce\x94'解碼:b'a'.decode() # 'a'b'\xe4\xb8\xa5'.decode() #"嚴"b'\xce\x94'.decode() # 'Δ'? 3.指定代碼編碼:代碼前2行 # -*- coding: <encoding name> -*- 獲取系統編碼: import sys sys.getfilesystemencoding()# 'utf-8 4.實例: 實例1.-編碼str.encode() str.encode 返回Unicode字符串的bytes參數:strictignorereplace 插入問號xmlcharrefreplace 插入XML字符引用backslashreplace 插入\uNNNN轉義序列namereplace 插入\N實例:u = chr(40960) + 'abcd' + chr(1972)u.encode('utf-8') # b'\xea\x80\x80abcd\xde\xb4'u.encode('ascii') #錯誤u.encode('ascii', 'ignore') # b'abcd'u.encode('ascii', 'replace') # b'?abcd?'u.encode('ascii', 'xmlcharrefreplace') # b'&#40960;abcd&#1972;'u.encode('ascii', 'backslashreplace') # b'\\ua000abcd\\u07b4'u.encode('ascii', 'namereplace') # b'\\N{YI SYLLABLE IT}abcd\\u07b4' 實例2.-解碼bytes.decode()b'\x80abc'.decode("utf-8", "strict") #錯誤b'\x80abc'.decode("utf-8", "replace") # '\ufffdabc'b'\x80abc'.decode("utf-8", "backslashreplace") # '\\x80abc'b'\x80abc'.decode("utf-8", "ignore") #'abc' 實例3-ord(),chr():ord() #接受一個字符的Unicode字符串并返回代碼點值以一個字符(長1字符串8位)作為參數,返回對應的 ASCII值或Unicode值如給Unicode字符超出范圍引發TypeErrorchr()#用一字節整數作參數返回對應字符。創建單字符Unicode字符串,該函數使用整數并返回包含相應代碼點的長度為1的Unicode字符串。chr(57344) # '\ue000'ord('\ue000')# 57344 5.備注: 5.1.Unicode屬性 字符信息包括字符的名稱,類別,數值 # 顯示一些關于幾個字符的信息,并打印一個特定字符的數字值: import unicodedatau = chr(233) + chr(0x0bf2) + chr(3972) + chr(6000) + chr(13231) for i, c in enumerate(u): print(i, '代碼點=%04x ;代碼=' % ord(c), unicodedata.category(c), end=" ")#類別代碼:是描述角色性質的縮寫。 print('; 名稱=',unicodedata.name(c)) # Get numeric value of second character print(unicodedata.numeric(u[1]))#1000.0# 0 代碼點=00e9 ;代碼= Ll ; 名稱= LATIN SMALL LETTER E WITH ACUTE# 'Ll'意思是“Letter,小寫” # 1 代碼點=0bf2 ;代碼= No ; 名稱= TAMIL NUMBER ONE THOUSAND# 'No'意思是“Number,other” # 2 代碼點=0f84 ;代碼= Mn ; 名稱= TIBETAN MARK HALANTA# 'Mn'是“Mark,nonspacing” # 3 代碼點=1770 ;代碼= Lo ; 名稱= TAGBANWA LETTER SA # 4 代碼點=33af ;代碼= So ; 名稱= SQUARE RAD OVER S SQUARED# 'So'是“Symbol,other”=================================================================== 5.2.Unicode正則表達式 re模塊支持的正則表達式可以以字節或字符串的形式提供。\d將匹配[0-9]字節中的字符,但字符串中的字符將匹配該'Nd'類別中的任何字符 \w匹配各種各樣的Unicode字符,但只能[a-zA-Z0-9_]以字節或如果re.ASCII提供 \s并將匹配Unicode空白字符或 。[ \t\n\r\f\v]import re p = re.compile(r'\d+') s = "Over \u0e55\u0e57 57 flavours" m = p.search(s) print(repr(m.group())) =================================================================== 5.3.讀寫Unicode數據 open('unicode.txt', encoding='utf-8') Unicode字符U+FEFF用作字節順序標記(BOM),通常寫為文件的第一個字符,以幫助自動檢測文件的字節排序。Unicode文件名 filename = 'filename\u4500abc' open(filename, 'w') os模塊中的函數os.stat()也將接受Unicode文件名。該os.listdir()函數返回文件名# utf-8 返回Unicode版本的文件名,返回包含編碼版本的字節。fn = 'filename\u4500abc'f = open(fn, 'w')f.close()import osprint(os.listdir(b'.'))print(os.listdir('.'))#輸出:amk:~$ python t.py[b'filename\xe4\x94\x80abc', ...]#包含UTF-8編碼的文件名['filename\u4500abc', ...] #第二個列表包含Unicode版本注意在大多數情況下,應使用Unicode API。字節API只能用于不可解碼文件名的系統,例如Unix系統。 ==================================================================== 5.4.編寫支持Unicode的程序的技巧在文件編碼之間轉換StreamRecoder類可以在編碼之間透明轉換# 例如輸入文件f是Latin-1,返回以UTF-8編碼字節:new_f = codecs.StreamRecoder(f,# en/decoder: used by read() to encode its results and by write() to decode its input.codecs.getencoder('utf-8'), codecs.getdecoder('utf-8'),# reader/writer: used to read and write to the stream.codecs.getreader('latin-1'), codecs.getwriter('latin-1') )未知編碼中的文件對文件進行更改不知道文件編碼,知道編碼與ASCII兼容,并只想檢查或修改ASCII部分,用surrogateescape錯誤處理程序打開該文件:with open(fname, 'r', encoding="ascii", errors="surrogateescape") as f:data = f.read()# make changes to the string 'data'with open(fname + '.new', 'w',encoding="ascii", errors="surrogateescape") as f:f.write(data)surrogateescape錯誤處理程序將所有非ASCII字節解碼為Unicode的專用使用區域范圍從U + DC80到U + DCFF代碼點。surrogateescape當編碼數據并將其寫回時使用錯誤處理程序時,這些私有代碼點將被重新轉換為相同的字節。

?

總結

以上是生活随笔為你收集整理的python 学习汇总41:unicode( tcy)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。