Mec*_*ail 9 python unicode character-properties
通常,人们希望列出给定Unicode类别中的所有字符.例如:
通过迭代所有Unicode代码点并测试所需类别(Python 3),可以生成此列表:
[c for c in map(chr, range(0x110000)) if unicodedata.category(c) in ('Ll',)]
Run Code Online (Sandbox Code Playgroud)
或使用正则表达式,
re.findall(r'\s', ''.join(map(chr, range(0x110000))))
Run Code Online (Sandbox Code Playgroud)
但这些方法很慢.有没有办法在类别中查找字符列表而不必遍历所有字符?
与Perl相关的问题:如何获取具有给定属性的所有Unicode字符的列表?
Mar*_*ers 10
如果您需要经常这样做,那么很容易为自己构建一个可重复使用的地图:
import sys
import unicodedata
from collections import defaultdict
unicode_category = defaultdict(list)
for c in map(chr, range(sys.maxunicode + 1)):
unicode_category[unicodedata.category(c)].append(c)
Run Code Online (Sandbox Code Playgroud)
从那里开始使用该地图转换回给定类别的一系列字符:
alphabetic = unicode_category['Ll']
Run Code Online (Sandbox Code Playgroud)
如果这对于启动时来说太昂贵,可以考虑将该结构转储到文件中; 从JSON文件或其他快速解析到dict格式加载此映射不应该太痛苦.
获得映射后,查找类别的过程当然是在恒定的时间内完成的.
归档时间: |
|
查看次数: |
2638 次 |
最近记录: |