【发布时间】:2014-11-26 17:27:19
【问题描述】:
我在 python 中有一个包含一些字符串的列表,我需要知道列表中的女巫项目就像“A1_8301”。这个“_”表示可以是任何字符。 有没有快速的方法来做到这一点?
如果我使用的是 SQL,我只需输入类似“where x like "A1_8301”的内容
谢谢!
【问题讨论】:
我在 python 中有一个包含一些字符串的列表,我需要知道列表中的女巫项目就像“A1_8301”。这个“_”表示可以是任何字符。 有没有快速的方法来做到这一点?
如果我使用的是 SQL,我只需输入类似“where x like "A1_8301”的内容
谢谢!
【问题讨论】:
正则表达式可能是要走的路。 IIRC,% 应该映射到 .* 和 _ 应该映射到 .。
matcher = re.compile('^A1.8301$')
list_of_string = [s for s in stringlist if matcher.match(s)]
【讨论】:
re.match而不是re.search...无论如何,我已经更新了。
在 Python 中,您会使用正则表达式:
import re
pattern = re.compile(r'^A1.8301$')
matches = [x for x in yourlist if pattern.match(x)]
这会生成一个符合您要求的元素列表。
^ 和$ 锚来防止子字符串 匹配;例如,BA1k8301-42 不应匹配。 re.match() 调用只会在测试字符串的开头匹配,但使用 ^ 会使其更加明确,并很好地反映了字符串结尾锚点的 $。_ 被翻译成.,意思是匹配一个字符。【讨论】:
^和$锚点并使用pattern.findall(longer_string);这会给你一个匹配列表。