遇到其他字母表时拆分

2024-04-27 23:52:18 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字符串:

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

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

我试过:

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

但它给出了:

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

Tags: 字符串renames数组splitatelierzacologne
1条回答
网友
1楼 · 发布于 2024-04-27 23:52:18

一个快速简单的正则表达式,用于区分拉丁非拉丁部分(regex101 demo

(?i)[^a-z\d]+|[_a-z\d\W]+

re.findalltio.run demo)一起使用。正则表达式是非常自我解释和匹配的

  • [^a-z\d]+{a3}字符,即not拉丁字母或数字
  • [_a-z\d\W]+一个或多个,即_拉丁字母、数字或word-characters

虽然速度很快,但您需要从结果中删除空白。否则它会变得更复杂:)要区分拉丁语/非拉丁语,可以在结果中使用^{}groupstio.run demo

import re

text = '欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010 乌龙乌 foo$'
pattern = '(?i)([^a-z\d]+)|([_a-z\d\W]+)'

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:\t\t'" + m.group(2).strip() + "'")

相关问题 更多 >