遇到另一个字母表时出现拆分



假设我有一个字符串:

欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010

如何将其拆分为两个字符串的数组?['欧珑 无极乌龙','Atelier Cologne Oolang Infini, 2010']

我试过了:

names = re.split(r'([a-zA-Z]+)', names)

但它给出了:

names:  ['欧珑 无极乌龙 ', 'Atelier', ' ', 'Cologne', ' ', 'Oolang', ' ', 'Infini', ', 2010']

一个快速、简单的正则表达式,用于区分拉丁非拉丁emo(。

(?i)[^a-zd]+|[_a-zdW]+

re.findall一起使用(tio.run演示(。正则表达式非常自我解释,与匹配

  • [^a-zd]+一个或多个非拉丁字母或数字的字符
  • [_a-zdW]+一个或多个,即_拉丁字母、数字或非单词字符

它很快,但您需要从结果中修剪空白。否则会变得更复杂:(为了在结果中区分拉丁/非拉丁,您可以将finditer与组一起使用(tio.rundemo(。

import re
text = '欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010 乌龙乌 foo$'
pattern = '(?i)([^a-zd]+)|([_a-zdW]+)'
for m in re.finditer(pattern, text):
if(m.group(1)):
print("non-latin:t'" + m.group(1).strip() + "'")
if(m.group(2)):
print("latin:tt'" + m.group(2).strip() + "'")

最新更新