假设我有一个字符串:
欧珑 无极乌龙 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() + "'")