比较Python中的字符串,如SQL“like”(带有“%”和“_”)

w1e3prcc  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(221)

我在python中有一个包含一些字符串的列表,我需要知道列表中的项目是否像"A1_8301"一样。这个"_"意味着可以是任何字符。有快速的方法吗?
如果我使用SQL,我只需键入"where x like" A1_8301 "之类的内容
谢谢大家!

bis0qfac

bis0qfac1#

在Python中,你可以使用正则表达式:

import re

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

这将生成符合您的要求的元素列表。

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

guicsvcw2#

正则表达式可能是可行的方法。IIRC,%应该Map到.*_应该Map到.

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

相关问题