有没有机会排除一些 unicode(非字母数字)被考虑?我正在标记有时包含变音符号的阿拉伯语单词,这被认为是非字母数字字符,但我不想删除它们,我需要在非字母数字字符(变音符号除外)和字母数字之间留一个空格。这是通过使用正则表达式?我要排除的表示变音符号的 unicode 如下:u'\u064b', u'\u064c', u'\u064d', u'\u064e', u'\u064f', u'\u0650',你'\u0651',你'\u0652'
那可能吗 ?
提前谢谢了
有没有机会排除一些 unicode(非字母数字)被考虑?我正在标记有时包含变音符号的阿拉伯语单词,这被认为是非字母数字字符,但我不想删除它们,我需要在非字母数字字符(变音符号除外)和字母数字之间留一个空格。这是通过使用正则表达式?我要排除的表示变音符号的 unicode 如下:u'\u064b', u'\u064c', u'\u064d', u'\u064e', u'\u064f', u'\u0650',你'\u0651',你'\u0652'
那可能吗 ?
提前谢谢了
只需为您的目的构建一个自定义字母数字模式:
accents = [u'\u064b', u'\u064c', u'\u064d', u'\u064e', u'\u064f', u'\u0650', u'\u0651', u'\u0652']
alnum = r'([\w%s]+)' % re.escape(''.join(accents))
pattern = re.compile(alnum, re.UNICODE)
要查找所有令牌:
>>> test_str = "...foo" + ''.join(accents) + "...bar"
>>> test_str
'...fooًٌٍَُِّْ...bar'
>>> pattern.findall(test_str)
['fooًٌٍَُِّْ', 'bar']
>>> len(_)
2
现在在标记和其余部分之间放置一个空格:
>>> ' '.join(filter(None, pattern.split(test_str)))
'... fooًٌٍَُِّْ ... bar'
>>> len(_.split())
4