Python处理unicode字符的方法详解
作者:微小冷
这篇文章主要介绍了Python处理unicode字符的方法详解,unicodedata中定义了所有Unicode字符的字符属性,主要包含两个功能,其一是根据名字查找字符;其二是给定字符查找其对应的信息,需要的朋友可以参考下
编码与查找
unicodedata 中定义了所有 Unicode 字符的字符属性,主要包含两个功能,其一是根据名字查找字符;其二是给定字符查找其对应的信息。
前者有一个函数
- lookup(name) 通过 name 查找字符并返回。
后者由四个函数,形参均为 chr[, default] ,其中 char 未待查找字符, default 为找到的字符未定义输出值时的默认输出
函数 | 返回值 |
name | chr的字符串名称 |
decimal | 转为数值 |
digit | 转为整数 |
numeric | 转为浮点数 |
上面这些函数,如果没找到,则报 ValueError 错误,示例如下
>>> unicodedata.name('1') 'DIGIT ONE' >>> unicodedata.decimal('1') 1 >>> unicodedata.digit('1') 1 >>> unicodedata.numeric('1') 1.0
分类
unicode 字符总共分为下面这些类别,通过调用 category(chr) 可以查看字符 chr 所属的unicode分类。
unicode 收集了几乎人类历史上出现的所有符号,所以字符数目相当多。其中,汉字属于 Lo 。
标志 | 含义 | 解释 | 字符数 | 举例 |
Ll | Letter, Lowercase | 小写字母 | 2233 | |
Lu | Letter, Uppercase | 大写字母 | 1831 | |
Lm | Letter, Modifier | 修饰字母 | 397 | |
Lt | Letter, Titlecase | 标题字母 | 31 | |
LC | Letter, Cased | 0 | ||
Lo | Letter, Other | 其他字母 | 17273 | |
Mc | Mark, Spacing Combining | 452 | ||
Me | Mark, Enclosing | 封闭标记 | 13 | |
Mn | Mark, Nonspacing | 非空格标记 | 1985 | |
Nd | Number, Decimal Digit | 十进制数字 | 680 | 0 |
Nl | Number, Letter | 数字字母 | 236 | Ⅲ |
No | Number, Other | 其他数字 | 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 | 其他标点 | 628 | |
Sc | Symbol, Currency | 货币符号 | 63 | $ |
Sk | Symbol, Modifier | 修饰符 | 125 | ꜓ |
Sm | Symbol, Math | 数学符号 | 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'
文字方向
由于不同文字的书写顺序是不同的,所以字符的应用场景会受到文字的影响。有一些字符具有较强的方向感,比如英语字母从左向右,而阿拉伯字母则是从右向左的。
bidirectional 可以查询字符文字的方向,
>>> unicodedata.bidirectional('>') 'ON' >>> unicodedata.bidirectional('\u06A0') 'AL' >>> unicodedata.bidirectional('啊') 'L'
类型 | 标志 | 说明 |
强 | L | 从左向右 |
强 | R | 从右向左 |
强 | AL | 阿拉伯式从右向左 |
弱 | EN | 欧洲数字 |
弱 | ES | 欧洲数字分隔符 |
弱 | ET | 欧洲数字终结符 |
弱 | AN | 阿拉伯数字 |
弱 | CS | 数字分隔符 |
弱 | MSN | 非空标记 |
弱 | 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 |
到此这篇关于Python处理unicode字符的方法详解的文章就介绍到这了,更多相关Python处理unicode内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!