python unicodedata用法- 程式人生

文章推薦指數: 80 %
投票人數:10人

UCD是Unicode字元資料庫(Unicode Character DataBase)的縮寫。

UCD由一些描述Unicode字元屬性和內部關係的純文字或html檔案組成。

程式人生>>pythonunicodedata用法 pythonunicodedata用法 阿新••發佈:2019-02-18 UCD是Unicode字元資料庫(UnicodeCharacterDataBase)的縮寫。

UCD由一些描述Unicode字元屬性和內部關係的純文字或html檔案組成。

UCD中的文字檔案大都是適合於程式分析的Unicode相關資料。

其中的html檔案解釋了資料庫的組織,資料的格式和含義。

UCD中最龐大的檔案無疑就是描述漢字屬性的檔案Unihan.txt。

在UCD5.0,0中,Unihan.txt檔案大小有28,221K位元組。

Unihan.txt中包含了很多有參考價值的索引,例如漢字部首、筆劃、拼音、使用頻度、四角號碼排序等。

這些索引都是基於一些比較權威的辭典,但大多數索引只能檢索部分漢字。

unicodedata.lookup(name) 通過名稱來查詢一個字元。

如果字元存在就返回相應字元,如果不存在丟擲異常KeyError。

>>>importunicodedata >>>print(unicodedata.lookup('LEFTCURLYBRACKET')) { >>>print(unicodedata.lookup('LEFT')) Traceback(mostrecentcalllast): File"",line1,in KeyError:"undefinedcharactername'LEFT'" >>> unicodedata.name(chr[,default]) 通過字元來查詢它的名稱。

如果成功返回相應名稱,否則丟擲異常ValueError。

>>>importunicodedata >>>print(unicodedata.name('{')) LEFTCURLYBRACKET >>>print(unicodedata.name('@')) COMMERCIALAT >>>print(unicodedata.name('{{')) Traceback(mostrecentcalllast): File"",line1,in TypeError:name()argument1mustbeaunicodecharacter,notstr >>> unicodedata.decimal(chr[,default]) 返回表示數字字元的數值。

如果給一個沒有數字的值時,會丟擲異常ValueError。

>>>importunicodedata >>>print(unicodedata.decimal('7')) 7 >>>print(unicodedata.decimal('7a')) Traceback(mostrecentcalllast): File"",line1,in TypeError:decimal()argument1mustbeaunicodecharacter,notstr >>> unicodedata.digit(chr[,default]) 把一個合法的數字字串轉換為數字值,比如0到9的字串轉換為相應的數字值。

如果非法的字串,丟擲異常ValueError。

>>>importunicodedata >>>print(unicodedata.digit('9',None)) 9 >>>print(unicodedata.digit('9a',None)) Traceback(mostrecentcalllast): File"",line1,in TypeError:digit()argument1mustbeaunicodecharacter,notstr >>> unicodedata.numeric(chr[,default]) 把一個表示數字的字串轉換為浮點數返回。

比如可以把‘8’,‘四’轉換數值輸出。

與digit()不一樣的地方是它可以任意表示數值的字元都可以,不僅僅限於0到9的字元。

如果不是合法字元,會丟擲異常ValueError。

>>>importunicodedata >>>print(unicodedata.numeric('四',None)) 4.0 >>>print(unicodedata.numeric('8',None)) 8.0 >>>print(unicodedata.numeric('8a',None)) Traceback(mostrecentcalllast): File"",line1,in TypeError:numeric()argument1mustbeaunicodecharacter,notstr >>> unicodedata.category(chr) 把一個字元返回它在UNICODE裡分類的型別。

具體型別如下: CodeDescription [Cc]Other,Control [Cf]Other,Format [Cn]Other,NotAssigned(nocharactersinthefilehavethisproperty) [Co]Other,PrivateUse [Cs]Other,Surrogate [LC]Letter,Cased [Ll]Letter,Lowercase [Lm]Letter,Modifier [Lo]Letter,Other [Lt]Letter,Titlecase [Lu]Letter,Uppercase [Mc]Mark,SpacingCombining [Me]Mark,Enclosing [Mn]Mark,Nonspacing [Nd]Number,DecimalDigit [Nl]Number,Letter [No]Number,Other [Pc]Punctuation,Connector [Pd]Punctuation,Dash [Pe]Punctuation,Close [Pf]Punctuation,Finalquote(maybehavelikePsorPedependingonusage) [Pi]Punctuation,Initialquote(maybehavelikePsorPedependingonusage) [Po]Punctuation,Other [Ps]Punctuation,Open [Sc]Symbol,Currency [Sk]Symbol,Modifier [Sm]Symbol,Math [So]Symbol,Other [Zl]Separator,Line [Zp]Separator,Paragraph [Zs]Separator,Space >>>importunicodedata >>>print(unicodedata.category('四')) Lo >>>print(unicodedata.category('8')) Nd >>>print(unicodedata.category('a')) Ll >>> unicodedata.bidirectional(chr) 把一個字元給出它的分類,以便進行從左到右,還是從右到左的排列。

如果沒有定義,返回空字串。

>>>importunicodedata >>>print(unicodedata.bidirectional('9')) EN >>> >>>print(unicodedata.bidirectional(u'\u0660')) AN >>> >>>print(unicodedata.bidirectional('中')) L >>> >>>print(unicodedata.bidirectional('a')) L >>> >>>print(unicodedata.category(u'\u0660')) Nd >>> 其中EN表示EnglishNumber,AN表示ArabicNumber,L表示Letter,Nd是表示NumberDecimal。

unicodedata.combining(chr) 把字元的權威組合值返回,如果沒有定義,預設是返回0。

當正規化操作時,可以根據這個值進行排序,大的值排在小的值後面。

>>>importunicodedata >>>print(unicodedata.combining('9')) 0 >>> >>>print(unicodedata.combining('A')) 0 >>> unicodedata.east_asian_width(chr) 把字元顯示的寬度返回。

具體內容如下: ‘F’(Fullwidth),‘H’(Halfwidth),‘W’(Wide),‘Na’(Narrow),‘A’(Ambiguous)or‘N’(Natural). >>>importunicodedata >>>print(unicodedata.east_asian_width('9')) Na >>> >>>print(unicodedata.east_asian_width('A')) Na >>> >>>print(unicodedata.east_asian_width('蔡')) W >>> unicodedata.mirrored(chr) 判斷一個字元是否支援映象屬性,如果支援返回1,否則返回0. >>>importunicodedata >>>print(unicodedata.mirrored('9')) 0 >>> >>>print(unicodedata.mirrored('A')) 0 >>> >>>print(unicodedata.mirrored('蔡')) 0 >>> unicodedata.decomposition(chr) 把一個可分解的字元分成兩個16進位制的值返回,如果不可分解,返回空。

>>>importunicodedata >>>print(unicodedata.decomposition('9')) >>> >>>print(unicodedata.decomposition('-')) >>> >>>print(unicodedata.decomposition('蔡')) >>> >>>print(unicodedata.decomposition('ガ')) 30AB3099 >>> unicodedata.normalize(form,unistr) 把一串UNICODE字串轉換為普通格式的字串,具體格式支援NFC、NFKC、NFD和NFKD格式。

一些文字元素即可以使用靜態的預先組合好的形式,也可使用動態組合的形式。

Unicode字元的不同表示序列被認為是等價的。

如果兩個或多個序列被認為是等價的,Unicode標準不規定哪一種特定的序列是正確的,而認為每一個序列只不過與其它序列等價。

如果需要一種單一的單一的表示方式,可以使用一種規範化的Unicode文字形式來減少不想要區別。

Unicode標準定義了四種規範化形式:NormalizationFormD(NFD),NormalizationFormKD(NFKD),NormalizationFormC(NFC),和NormalizationFormKC(NFKC)。

大約來說,NFD和NFKD將可能的字元進行分解,而NFC和NFKC將可能的字元進行組合。

>>>importunicodedata >>>print(unicodedata.normalize('NFKD',u'aあä').encode('ascii','ignore')) b'aa' >>> >>>title=u"Klüftskrämsinförpåfédéralélectoralgroße" >>>printtitle.encode(‘ascii’,'ignore’) Klftskrmsinfrpfdrallectoralgroe #可以看到丟了許多的字元 >>>importunicodedata >>>unicodedata.normalize('NFKD',title).encode('ascii','ignore') 'Kluftskramsinforpafederalelectoralgroe' unicodedata.unidata_version 返回當前Unicode使用的資料庫的版本。

unicodedata.ucd_3_2_0 提供ucd3.2的物件方式訪問,以便相容舊的IDNA的應用程式。

>>>importunicodedata >>>print(unicodedata.unidata_version) 9.0.0 >>> >>>print(unicodedata.ucd_3_2_0) >>> 下面來仔細檢視一個字元的UNICODE資料: U+0062istheUnicodehexvalueofthecharacterLatinSmallLetterB,whichiscategorizedas“lowercaseletter”intheUnicode6.0charactertable. UnicodeCharacterInformation UnicodeHexU+0062 CharacterNameLATINSMALLLETTERB GeneralCategoryLowercaseLetter[Code:Ll] CanonicalCombiningClass0 BidirectionalCategoryL MirroredN UppercaseVersionU+0042 TitlecaseVersionU+0042 UnicodeCharacterEncodings LatinSmallLetterBHTMLEntityb(decimalentity),b(hexentity) WindowsKeyCodeAlt0098orAlt+00621 ProgrammingSourceCodeEncodingsPythonhex:u”\u0062”,HexforC++andJava:“\u0062” UTF-8HexadecimalEncoding0x62 上面大多的函式都是針對這些資料資訊進行查詢,並且返回相應的值。

Android6.0開機動畫(二)AMS通知系統啟動&WMS通知SurfaceFlinger關閉開機動畫 «上一篇 Oracle字符集的檢視和Oracle字符集的設定修改下一篇» 相關推薦 pythonunicodedata用法 UCD是Unicode字元資料庫(UnicodeCharacterDataBase)的縮寫。

UCD由一些... python小白(無編程基礎,無計算機基礎)的開發之路輔助知識3pythonos用法 padding我們.somtimemageos.chdir實現exists返回 獲取文件所在路徑 impo... 關於#!/usr/bin/envpython的用法 查找linux中mangpo安裝不同的linux啟動log在linux的一些腳本裏,需在開頭一行指定腳本的... reducepython的用法 placedposappdefaulttoolvaluenbspgpotoo1.查看reduce的用法 ... python--open用法 gpopytho字符串默認noticeclasfilterredoemopen/文件操作f=open(‘/... python-logging用法 formatgernameformatteroggotstimenbspmat1,引入logging程序... pythonargparse用法總結 計算註意get一行falselB數學計算validelse轉:pythonargparse用法總結 1... python:datetime用法 romimport小時當前日期格printint用法pytho>>importdatetim... python:random用法 pythonpythoavaport個數....隨機生成samrange>>importra... pythonargparse用法 argumentsturnargparsechoiceurnwinromimpmat示例一 創建文件pro... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 python+unicodedata用法 VMware安裝CentOS之三——CentOS網絡設置及軟件安裝 JSON字串Gson,JSONObject解析中文亂碼,介面 android+修改標題欄文字居中 【Java基礎知識】switch表示式、case穿透、default、switch結束條件 Destination+host+unreachable? bzoj1688+[Usaco2005+Open]Disease+Manangement+疾病管理 Ask+HN:+Anyone+else+having+problems+with+delivery+of+Lily Linux+實時性能測試工具——Cyclictest+的使用與分析 ESXi主機+查看硬盤健康信息(SMART)



請為這篇文章評分?