首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遇到另一个字母表时拆分

遇到另一个字母表时拆分
EN

Stack Overflow用户
提问于 2020-11-11 06:46:43
回答 1查看 79关注 0票数 1

假设我有一个字符串:

代码语言:javascript
复制
欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010

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

我试过了:

代码语言:javascript
复制
names = re.split(r'([a-zA-Z]+)', names)

但它给了我们:

代码语言:javascript
复制
names:  ['欧珑 无极乌龙 ', 'Atelier', ' ', 'Cologne', ' ', 'Oolang', ' ', 'Infini', ', 2010']
EN

回答 1

Stack Overflow用户

发布于 2020-11-11 07:48:05

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

代码语言:javascript
复制
(?i)[^a-z\d]+|[_a-z\d\W]+

re.findall (tio.run )一起使用。正则表达式可以很好地自我解释和匹配

  • 可以是[^a-z\d]+ one or more characters,可以是not拉丁字母,也可以是digits
  • ,或者[_a-z\d\W]+一个或多个,可以是_拉丁语字母、数字或数字

它很快,但是你需要从结果中去掉空格。否则它会变得更复杂:)要在结果中区分拉丁语和非拉丁语,你可以使用finditer groups (tio.run )。

代码语言:javascript
复制
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() + "'")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64777908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档