首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从元素列表中提取匹配的数字

从元素列表中提取匹配的数字
EN

Stack Overflow用户
提问于 2019-03-26 12:23:40
回答 1查看 71关注 0票数 1

我有数字、字母和特殊字符混合的元素列表:

代码语言:javascript
复制
string = ['1 B, 14/A - P,1C,2A,21 C - A',    
          '3P,21B,2-A,1A',
          '3C,2-W,ABC 200',
          '3 Z,ABC 100 - BB',
          'ABC 300,ABC 200',
          'ABC 200,ABC 100',
          '1c/A,2 - z']

我想提取匹配条件的元素。

条件:列表中的元素应该是starting with the Matching number或以ABC (Matching number)开头

所需产出:

代码语言:javascript
复制
starting_with_one = ['1 B, 14/A - P,1C,2A,21 C - A', # ---> Here `1 B ,14/A - P,1C` are contains the number 1  
                     '3P,21B,2-A,1A',                # ---> Here `1A` Contains the number 1   
                     '3 Z,ABC 100 - BB',             # ---> Here `ABC 100 - BB` Contains the number 1  
                     'ABC 200,ABC 100',              # ---> Here `ABC 100` Contains the number 1
                     '1c/A,2 - z']                   # ---> Here `1c/A' contains 1

starting_with_two = ['1 B, 14/A - P,1C,2A,21 C - A',
                     '3P,21B,2-A,1A',
                     '3C,2-W,ABC 200',
                     'ABC 300,ABC 200',
                     'ABC 200,ABC 100',
                     '1c/A,2 - z']

我试过的是:

搜索数字1

代码语言:javascript
复制
for i in string:
    print(re.search(r"(^|[^\d])(1)", i))

<_sre.SRE_Match object; span=(0, 1), match='1'>
<_sre.SRE_Match object; span=(10, 12), match=',1'>
None
<_sre.SRE_Match object; span=(7, 9), match=' 1'>
None
<_sre.SRE_Match object; span=(11, 13), match=' 1'>
<_sre.SRE_Match object; span=(0, 1), match='1'>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 13:37:06

你可以用

代码语言:javascript
复制
r'\b(?:ABC\s+)?1'

标识要保留的字符串。见regex演示

详细信息

  • \b -一个单词边界
  • (?:ABC\s+)? -一个可选的子字符串:ABC和1+空格
  • 1 - 1 char.

请参阅Python演示

代码语言:javascript
复制
import re
strs = ['1 B, 14/A - P,1C,2A,21 C - A','3P,21B,2-A,1A','3C,2-W,ABC 200','3 Z,ABC 100 - BB','ABC 300,ABC 200','ABC 200,ABC 100','1c/A,2 - z']
for s in strs:
    if re.search(r'\b(?:ABC\s+)?1', s):
        print(s)

输出:

代码语言:javascript
复制
1 B, 14/A - P,1C,2A,21 C - A
3P,21B,2-A,1A
3 Z,ABC 100 - BB
ABC 200,ABC 100
1c/A,2 - z
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55357093

复制
相关文章

相似问题

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