gpt4 book ai didi

python - 在 python 中搜索通配符的字符串并返回匹配位置

转载 作者:行者123 更新时间:2023-11-28 18:47:08 27 4
gpt4 key购买 nike

我目前正在处理一个由数千个具有身份的字符串组成的数据集,我想搜索通配符图案(由 N 后跟 P 以外的任何字母组成,然后是 S 或a T) 使用 RegEx 模块出现在字符串中,并返回一个 ID 列表与主题出现的位置对。

import re
strings = [['ID#1','NTGSLTKNASMNLTQRSNQT'],['ID#2','NLSHTNWEUWBNTTDKWODNUT'],...]
for x in strings:
re.search('N[^P][ST]',x[1])

我想返回:

[['ID#1',[8,12,18]],['ID#2',[1,12,20]],.....]

如果有人有任何想法,将不胜感激,谢谢!

最佳答案

您很可能正在寻找这个。

re.finditer(pattern, string[, flags]) 

返回一个迭代器,在字符串中的 RE 模式的所有非重叠匹配上产生 MatchObject 实例。该字符串从左到右扫描,并按找到的顺序返回匹配项。空匹配项包含在结果中,除非它们触及另一个匹配项的开头。

这会起作用..

import re

strings = [['ID#1','NTGSLTKNASMNLTQRSNQT'],['ID#2','NLSHTNWEUWBNTTDKWODNUT']]
pattern = re.compile('N[^P][ST]')

print [[f[0], [m.start() + 1 for m in pattern.finditer(f[1])]] for f in strings]

或者您可以尝试类似...

import re

strings = [['ID#1','NTGSLTKNASMNLTQRSNQT'],['ID#2','NLSHTNWEUWBNTTDKWODNUT']]
pattern = re.compile('N[^P][ST]')

for x in strings:
p = pattern.finditer(x[1])
print [[x[0], [m.start() + 1 for m in p]]

关于python - 在 python 中搜索通配符的字符串并返回匹配位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282099/

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