Skip to main content
 首页 » 编程设计

python之在非字母数字和字母数字字符之间插入一个空格,特定字符除外 (Python)

2025年05月04日9youxin

是否有机会从考虑中排除某些 unicode(非字母数字)? 我正在标记有时包含变音符号的阿拉伯语单词,这被认为是非字母数字字符,但我不想删除它们,我需要在非字母数字字符(变音符号除外)和字母数字字符之间留一个空格。这是通过使用正则表达式?我想排除的代表变音符号的 unicode 如下:u'\u064b', u'\u064c', u'\u064d', u'\u064e', u'\u064f', u'\u0650', u'\u0651', u'\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