比较python中的字符串,如sql"like"(带有"%"和"_")

Ant*_*nio 11 python string

我在python中有一个带有一些字符串的列表,我需要知道列表中的女巫项目就像"A1_8301".这个"_"表示可以是任何字符.有快速的方法吗?

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

谢谢!

Mar*_*ers 10

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

import re

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

这会生成符合您要求的元素列表.

  • ^$需要锚,防止匹配; BA1k8301-42例如,不应该匹配.该re.match()调用仅在测试字符串的开头匹配,但是使用^使得它更加明确并且$很好地镜像了字符串结束锚.
  • _一个SQL像被翻译成.,这意味着匹配一个字符.


mgi*_*son 5

正则表达式可能是正确的选择。IIRC,%应映射到.*_应映射到.

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