2013-06-29 89 views
2

是否有机会排除部分unicode(非字母数字)被考虑? 我对包含变音符号的阿拉伯文字词进行了标记,有时将它视为非字母数字字符,但我不想删除它们,并且需要在非字母数字字符(除了变音符号)和字母数字之间留有空格。 。这是通过使用正则表达式?我想排除的代表变音符号的unicode如下:u'\ u064b',u'\ u064c',u'\ u064d',u'\ u064e',u'\ u064f',u'\ u0650', u'\ u0651',u'\ u0652'在非字母数字和字母数字字符之间插入空格,但不包括特定字符(Python)

是可能的吗?

许多在此先感谢

+2

你会编辑你的问题来包含一个例子吗? –

回答

1

只是建立一个自定义的字母数字的图案为你的目的:

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 
+0

哇!非常感谢你,这正是我所需要的..非常感谢,完美的工作 – user2490790

+0

你应该接受答案。 –

+0

非常感谢! – user2490790

相关问题