这是一个简单的扫描器,它根据某些规则对文本进行标记,并标记标记。
- 处理未知字符并将其标记为未知的最佳方法是什么?
- 是否有推荐的方法/库来加快速度,同时完成类似的结果并保持相对简单。
例子:
import re
def alpha(scanner,token):
return token, 'a'
def numeric(scanner,token):
return token,'rn'
def punctuation(scanner,token):
return token, 'p'
def superscript(scanner,token):
return token, 'sn'
scanner = re.Scanner([
(u"[a-zA-Z]+", alpha),
(u"[.,:;!?]", punctuation),
(u"[0-9]+", numeric),
(u"[\xb9\u2070\xb3\xb2\u2075\u2074\u2077\u2076\u2079\u2078]", superscript),
(r"[\s\n]+", None), # whitespace, newline
])
tokens, _ = scanner.scan("This is a little test? With 7,9 and 6.")
print tokens
出去:
[('This', 'a'), ('is', 'a'), ('a', 'a'), ('little', 'a'), ('test', 'a'),
('?', 'p'), ('With', 'a'), ('7', 'rn'), (',', 'p'), ('9', 'rn'),
('and', 'a'), ('6', 'rn'), ('.', 'p')]
ps!定义的函数可能会尝试进一步对标记进行分类。