gpt4 book ai didi

python - 如何将字符串与多个正则表达式匹配?

转载 作者:行者123 更新时间:2023-11-28 20:39:25 26 4
gpt4 key购买 nike

目前我正在使用下面的过滤器来增加 arr 中的元素,给定一个字符串列表作为参数,在 python 中是否有一种有效的方法来执行此操作。我有数百万个这样的列表来验证。

  def countbycat(tempfilter):
arr=[0,0,0,0,0]
apattern,dpattern,mpattern,upattern,tpattern = re.compile("^[a]--*"),re.compile("^[d]--*"),re.compile("^[m]--*"),re.compile("^[u]--*"),re.compile("^[t]--*")
for each in tempfilter:
if upattern.match(each):
arr[0]+=1
elif mpattern.match(each):
arr[1]+=1
elif dpattern.match(each):
arr[2]=1
elif apattern.match(each):
arr[3]+=1
elif tpattern.match(each):
arr[4]+=1
return arr

最佳答案

对于问题中给出的正则表达式,您可以使用以下使用字符类的正则表达式:

[admut]-
  • [admut] 将匹配 admu, t
  • ^ 可以省略,因为 re.match 只匹配字符串的开头。
  • 删除了 -* 因为它毫无意义;只有一个 - 足以检查 - 出现在 a/d/m/u/t 之后。

而不是使用数组,你可以使用字典;无需记住索引:

def countbycat(tempfilter):
count = dict.fromkeys('admut', 0)
pattern = re.compile("[admut]-")
for each in tempfilter:
if pattern.match(each):
count[each[0]] += 1
return count

而不是 dict.fromkeys , 你可以使用 collections.Counter .

关于python - 如何将字符串与多个正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161309/

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