Python處理unicode字符的方法詳解
編碼與查找
unicodedata 中定義了所有 Unicode 字符的字符屬性,主要包含兩個(gè)功能,其一是根據(jù)名字查找字符;其二是給定字符查找其對應(yīng)的信息。
前者有一個(gè)函數(shù)
- lookup(name) 通過 name 查找字符并返回。
后者由四個(gè)函數(shù),形參均為 chr[, default] ,其中 char 未待查找字符, default 為找到的字符未定義輸出值時(shí)的默認(rèn)輸出
函數(shù) | 返回值 |
name | chr的字符串名稱 |
decimal | 轉(zhuǎn)為數(shù)值 |
digit | 轉(zhuǎn)為整數(shù) |
numeric | 轉(zhuǎn)為浮點(diǎn)數(shù) |
上面這些函數(shù),如果沒找到,則報(bào) ValueError 錯(cuò)誤,示例如下
>>> 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 |
下面實(shí)踐一下
>>> 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)文章
python爬取天氣數(shù)據(jù)的實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于python爬取天氣數(shù)據(jù)的實(shí)例詳解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2020-11-11Python socket連接中的粘包、精確傳輸問題實(shí)例分析
這篇文章主要介紹了Python socket連接中的粘包、精確傳輸問題,結(jié)合實(shí)例形式分析了Python socket連接中的粘包、精確傳輸相關(guān)問題原因、解決方案與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03Pandas技巧分享之創(chuàng)建測試數(shù)據(jù)
學(xué)習(xí)pandas的過程中,為了嘗試pandas提供的各類功能強(qiáng)大的函數(shù),常常需要花費(fèi)很多時(shí)間去創(chuàng)造測試數(shù)據(jù),本篇介紹了一些快速創(chuàng)建測試數(shù)據(jù)的方法,需要的可以參考一下2023-07-07Pytest實(shí)現(xiàn)setup和teardown的詳細(xì)使用詳解
這篇文章主要介紹了Pytest實(shí)現(xiàn)setup和teardown的詳細(xì)使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04解決安裝和導(dǎo)入tensorflow、keras出錯(cuò)的問題
這篇文章主要介紹了解決安裝和導(dǎo)入tensorflow、keras出錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01