首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能提供更好的解决方案吗?从右到左。使用python

有人能提供更好的解决方案吗?从右到左。使用python
EN

Stack Overflow用户
提问于 2013-07-04 17:21:33
回答 1查看 775关注 0票数 0

首先,独立日快乐!给那些申请的人!

我正在分析一个从头算图,为此,我需要获得组件的名称,开发人员用来描述它的功能,我可以从下面的行中提取它。

代码语言:javascript
复制
name ='}}@0|@207000|80000|227000|100000|152000|126000|11654|RFMT: Generate Labels Header|Ab Initio Software|Built-in|1|100|0||6||32769|1|{1|0|}}}'

我尝试使用regex提取组件的名称,即:RFMT: Generate

问题来了:

我的分隔符为_软件_有没有办法用Python实现这个功能。

我想出的最有效的解决方案是扭转一切。

代码语言:javascript
复制
name = line[::-1]
name = re.search('erawtfoS oitinI bA\|(.*?)\|', name, re.IGNORECASE).group(1)
name = name[::-1]

我只想让它更高效,因为它将被用于数百个图表,而其中的大多数文件都相当大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-04 17:28:09

您只需匹配非|字符,并使用围城确保它是Ab Initio...之前的元素。

代码语言:javascript
复制
re.search(r'(?<=[|])[^|]*(?=[|]Ab Initio Software)', name, re.IGNORECASE).group()

即使没有前瞻性,如果只将(.*?)更改为更显式的[^|]*,也会得到正确的结果。但贪婪的前瞻性解决方案可能更有效。总之,这里是:

代码语言:javascript
复制
re.search(r'[|]([^|]*)[|]Ab Initio Software', name, re.IGNORECASE).group(1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17475563

复制
相关文章

相似问题

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