我有一个字符串列表。
考虑以下代码:
import re
mylist = ["http://abc/12345?abc", "https://abc/abc/2516423120?$abc$"]
r = re.compile("(\d{3,})")
result0 = list(filter(r.findall, mylist)) # Note 1
print(result0)
result1 = r.findall(mylist[0])
result2 = r.findall(mylist[1])
print(result1, result2)
结果是:
['http://abc/12345?abc', 'https://abc/abc/2516423120?$abc$']
['12345'] ['2516423120']
为什么我们得到的结果有所不同?
答案 0 :(得分:1)
我不确定您希望filter
做什么,但是这样做是因为它返回x
的所有mylist
元素bool(r.findall(x))
的迭代器}是False
。仅当r.findall(x)
返回一个空列表时,即正则表达式与字符串不匹配,因此这里result0
包含与mylist
相同的值。