使用unicodedata和regex将文本中的组合字符拆分
文本处理时有时候需要将组合字符对应到同一个字符,不同种类的组合字符拆分的结果会有区别,这里的组合字符以法语字符举例。
代码示例如下:
import regex as re import unicodedata text = u'à ? ? è é ê ? ? ? ? ù ? ? ?' print (text) text = unicodedata.normalize('NFD',text) print (text) text = re.sub(ur'\p{M}',u'',text) print (text)
输出结果为:
à ? ? è é ê ? ? ? ? ù ? ? ? a? a? c? e? e? e? e? i? i? o? u? u? ? C? a a c e e e e i i o u u ? C
其中的NFD可以换成NFKD,在当前情况下结果相同,在控制台中的输出和这里显示的有些不一样。
第二行中的数据被拆分为:
u'a\u0300 a\u0302 c\u0327 e\u0300 e\u0301 e\u0302 e\u0308 i\u0302 i\u0308 o\u0302 u\u0300 u\u0302 \u0153 C\u0327'