比较python中的字符串, “like” (with “%” and “_”)

Compare strings in python like the sql “like” (with “%” and “_”)

我在python中有一个带有一些字符串的列表,我需要知道列表中的witch项类似于"a1_"。这个"u"表示可以是任何字符。有快速的方法吗?

如果我使用的是SQL,我只需键入"where x like"a1_

谢谢您!


在python中,您将使用正则表达式:

1
2
3
4
import re

pattern = re.compile(r'^A1.8301$')
matches = [x for x in yourlist if pattern.match(x)]

这将生成一个符合您需求的元素列表。

  • 为了防止子串匹配,需要使用^$锚;例如,BA1k8301-42不应匹配。re.match()调用只在测试字符串的开头匹配,但是使用^会使这一点更加明确,并很好地反映了$的字符串结尾锚定。
  • 类SQL中的_转换为.,表示匹配一个字符。


正则表达式可能是解决问题的方法。iIRC,%应映射到.*_应映射到.

1
2
matcher = re.compile('^A1.8301$')
list_of_string = [s for s in stringlist if matcher.match(s)]