gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:09:23 25 4
gpt4 key购买 nike

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

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']

我想提取符合条件的元素。

条件:列表中的元素应以匹配数字开头或以ABC(匹配号码)

开头

所需输出:

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:

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'>

最佳答案

您可以使用

r'\b(?:ABC\s+)?1'

标识您要保留的字符串。请参阅the regex demo .

详细信息

  • \b - 单词边界
  • (?:ABC\s+)? - 可选子字符串:ABC,然后是 1+ 个空格
  • 1 - 1 字符。

参见Python demo :

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)

输出:

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

关于python - 从元素列表中提取匹配的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55357093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com