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

时间:2014-10-01 19:05:26

标签: python string

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

如果我使用的是SQL,我只需键入类似“其中x喜欢”A1_8301“

的内容

谢谢!

2 个答案:

答案 0 :(得分:10)

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

import re

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

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

  • 需要^$个锚点来阻止 substring 匹配;例如,BA1k8301-42不应该匹配。 re.match()调用仅在测试字符串的开头匹配,但使用^会使其更加明确,并且很好地镜像$以获得字符串结尾的锚点。 / LI>
  • SQL中的_被翻译为.,意味着匹配一个字符

答案 1 :(得分:2)

正则表达式可能是要走的路。 IIRC,%应映射到.*,而_应映射到.

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