Python處理unicode字符的方法詳解
編碼與查找
unicodedata 中定義了所有 Unicode 字符的字符屬性,主要包含兩個功能,其一是根據(jù)名字查找字符;其二是給定字符查找其對應(yīng)的信息。
前者有一個函數(shù)
- lookup(name) 通過 name 查找字符并返回。
后者由四個函數(shù),形參均為 chr[, default] ,其中 char 未待查找字符, default 為找到的字符未定義輸出值時的默認(rèn)輸出
| 函數(shù) | 返回值 |
| name | chr的字符串名稱 |
| decimal | 轉(zhuǎn)為數(shù)值 |
| digit | 轉(zhuǎn)為整數(shù) |
| numeric | 轉(zhuǎn)為浮點(diǎn)數(shù) |
上面這些函數(shù),如果沒找到,則報 ValueError 錯誤,示例如下
>>> unicodedata.name('1')
'DIGIT ONE'
>>> unicodedata.decimal('1')
1
>>> unicodedata.digit('1')
1
>>> unicodedata.numeric('1')
1.0分類
unicode 字符總共分為下面這些類別,通過調(diào)用 category(chr) 可以查看字符 chr 所屬的unicode分類。
unicode 收集了幾乎人類歷史上出現(xiàn)的所有符號,所以字符數(shù)目相當(dāng)多。其中,漢字屬于 Lo 。
| 標(biāo)志 | 含義 | 解釋 | 字符數(shù) | 舉例 |
| Ll | Letter, Lowercase | 小寫字母 | 2233 | |
| Lu | Letter, Uppercase | 大寫字母 | 1831 | |
| Lm | Letter, Modifier | 修飾字母 | 397 | |
| Lt | Letter, Titlecase | 標(biāo)題字母 | 31 | |
| LC | Letter, Cased | 0 | ||
| Lo | Letter, Other | 其他字母 | 17273 | |
| Mc | Mark, Spacing Combining | 452 | ||
| Me | Mark, Enclosing | 封閉標(biāo)記 | 13 | |
| Mn | Mark, Nonspacing | 非空格標(biāo)記 | 1985 | |
| Nd | Number, Decimal Digit | 十進(jìn)制數(shù)字 | 680 | 0 |
| Nl | Number, Letter | 數(shù)字字母 | 236 | Ⅲ |
| No | Number, Other | 其他數(shù)字 | 915 | ¼ |
| Pc | Punctuation, Connector | 連接符 | 10 | ﹍ |
| Pd | Punctuation, Dash | 破折號 | 26 | |
| Ps | Punctuation, Open | 左括號 | 79 | |
| Pe | Punctuation, Close | 右括號 | 77 | |
| Pf | Punctuation, Final quote | 右引號 | 10 | |
| Pi | Punctuation, Initial quote | 左引號 | 12 | |
| Po | Punctuation, Other | 其他標(biāo)點(diǎn) | 628 | |
| Sc | Symbol, Currency | 貨幣符號 | 63 | $ |
| Sk | Symbol, Modifier | 修飾符 | 125 | ? |
| Sm | Symbol, Math | 數(shù)學(xué)符號 | 948 | ? |
| So | Symbol, Other | 其他符號 | 6634 | ? |
| Zl | Separator, Line | 換行符 | 1 | U+2028 |
| Zp | Separator, Paragraph | 分段符 | 1 | U+2029 |
| Zs | Separator, Space | 空格 | 17 | |
| Cc | Other, Control | 控制字符 | 65 | |
| Cf | Other, Format | 格式字符 | 170 | |
| Cn | Other, Not Assigned | 0 | ||
| Co | Other, Private Use | 6 | ||
| Cs | Other, Surrogate | 6 |
下面實踐一下
>>> unicodedata.category('A')
'Lu'
>>> unicodedata.category('a')
'Ll'
>>> unicodedata.category('啊')
'Lo'
>>> unicodedata.category('?')
'Sm'文字方向
由于不同文字的書寫順序是不同的,所以字符的應(yīng)用場景會受到文字的影響。有一些字符具有較強(qiáng)的方向感,比如英語字母從左向右,而阿拉伯字母則是從右向左的。
bidirectional 可以查詢字符文字的方向,
>>> unicodedata.bidirectional('>')
'ON'
>>> unicodedata.bidirectional('\u06A0')
'AL'
>>> unicodedata.bidirectional('啊')
'L'| 類型 | 標(biāo)志 | 說明 |
| 強(qiáng) | L | 從左向右 |
| 強(qiáng) | R | 從右向左 |
| 強(qiáng) | AL | 阿拉伯式從右向左 |
| 弱 | EN | 歐洲數(shù)字 |
| 弱 | ES | 歐洲數(shù)字分隔符 |
| 弱 | ET | 歐洲數(shù)字終結(jié)符 |
| 弱 | AN | 阿拉伯?dāng)?shù)字 |
| 弱 | CS | 數(shù)字分隔符 |
| 弱 | MSN | 非空標(biāo)記 |
| 弱 | BN | 邊界符號 |
| 中立 | B | 段落分隔符 |
| 中立 | S | 制表符 |
| 中立 | WS | 空格 |
| 中立 | ON | 其他中立字符 |
| 顯式 | LRE | Left-to-Right Embedding |
| 顯式 | LRO | Left-to-Right Override |
| 顯式 | RLE | Right-to-Left Embedding |
| 顯式 | RLO | Right-to-Left Override |
| 顯式 | Pop Directional Format | |
| 顯式 | LRI | Left-to-Right Isolate |
| 顯式 | RLI | Right-to-Left Isolate |
| 顯式 | FSI | First Strong Isolate |
| 顯式 | PDI | Pop Directional Isolate |
到此這篇關(guān)于Python處理unicode字符的方法詳解的文章就介紹到這了,更多相關(guān)Python處理unicode內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyQt5重寫QComboBox的鼠標(biāo)點(diǎn)擊事件方法
今天小編就為大家分享一篇PyQt5重寫QComboBox的鼠標(biāo)點(diǎn)擊事件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python實現(xiàn)的遠(yuǎn)程文件自動打包并下載功能示例
這篇文章主要介紹了Python實現(xiàn)的遠(yuǎn)程文件自動打包并下載功能,結(jié)合實例形式分析了Python使用spawn()方法執(zhí)行ssh、scp 命令實現(xiàn)遠(yuǎn)程文件的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
使用Python實現(xiàn)一個遠(yuǎn)程壁紙設(shè)置系統(tǒng)
今天我要分享一個實用的遠(yuǎn)程壁紙設(shè)置系統(tǒng),包含一個圖形界面的發(fā)送端和一個后臺運(yùn)行的服務(wù)端,這個系統(tǒng)可以讓你輕松地將本地圖片設(shè)置為遠(yuǎn)程計算機(jī)的桌面壁紙,非常適合辦公室環(huán)境、家庭網(wǎng)絡(luò)或需要統(tǒng)一壁紙設(shè)置的場景,需要的朋友可以參考下2025-12-12
在pycharm上mongodb配置及可視化設(shè)置方法
今天小編就為大家分享一篇在pycharm上mongodb配置及可視化設(shè)置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python傳到前端的數(shù)據(jù),雙引號被轉(zhuǎn)義的問題
這篇文章主要介紹了python傳到前端的數(shù)據(jù),雙引號被轉(zhuǎn)義的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

