我在Python中有一个包含一些字符串的列表,我需要知道列表中哪个项目与"A1_8301"相似。这个"_"代表可以是任何字符。
有没有快速的方法来做到这一点?
如果我使用SQL,我只需要输入类似于"where x like "A1_8301""这样的内容。
谢谢!
import re
pattern = re.compile(r'^A1.8301$')
matches = [x for x in yourlist if pattern.match(x)]
这将产生一个符合您要求的元素列表。
^
和$
锚点来防止子字符串匹配;例如,BA1k8301-42
不应该匹配。但是,re.match()
调用只会在测试字符串的开头进行匹配,但使用^
会更加明确,并很好地反映了末尾锚点的$
。_
被翻译为.
,表示匹配任意一个字符。%
应该映射到.*
,而_
应该映射到.
。matcher = re.compile('^A1.8301$')
list_of_string = [s for s in stringlist if matcher.match(s)]
re.match
而不是re.search
... 无论如何,我已经更新了。 - mgilson
^
和$
锚点,使用pattern.findall(longer_string)
;这将给你一个匹配列表。 - Martijn Pieters