比较python中的字符串,如sql;例如;(带“%”和“%”)

比较python中的字符串,如sql;例如;(带“%”和“%”),python,string,Python,String,我在python中有一个带有一些字符串的列表,我需要知道列表中的witch项类似于“A1_8301”。这个“u”表示可以是任何字符。 有没有快速的方法 如果我使用的是SQL,我只需键入“where x like”A1_8301 谢谢!正则表达式可能是一个不错的选择。IIRC、%应该映射到*,而.应该映射到 matcher = re.compile('^A1.8301$') list_of_string = [s for s in stringlist if matcher.match(s)]

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

如果我使用的是SQL,我只需键入“where x like”A1_8301


谢谢!

正则表达式可能是一个不错的选择。IIRC、
%
应该映射到
*
,而
.
应该映射到

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

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

import re

pattern = re.compile(r'^A1.8301$')
matches = [x for x in yourlist if pattern.match(x)]
这将生成符合您的需求的元素列表

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

这一点很好,因为我们使用的是
re.match
而不是
re.search
,所以只在字符串开头添加了子字符串。无论如何,我已经更新了。是的,我就是出于这个原因添加了它。谢谢!非常喜欢这个解释。学习了一点正则表达式!有没有一种方法可以只用一个字符串来实现这一点不要列表,否则我应该创建一个项目列表?@Antonio:你的意思是你有一个较长的字符串,其中包含这些模式?然后删除
^
$
锚,并使用
模式。findall(较长的字符串)
;这将为你提供一个匹配列表。是的。findall是我所需要的。谢谢。