我想使用regex过滤python中的字符串列表。在以下情况下,只保留扩展名为“.npy”的文件。
不起作用的代码:
import re
files = [ '/a/b/c/la_seg_x005_y003.png',
'/a/b/c/la_seg_x005_y003.npy',
'/a/b/c/la_seg_x004_y003.png',
'/a/b/c/la_seg_x004_y003.npy',
'/a/b/c/la_seg_x003_y003.png',
'/a/b/c/la_seg_x003_y003.npy', ]
regex = re.compile(r'_x\d+_y\d+\.npy')
selected_files = filter(regex.match, files)
print(selected_files)
同样的regex在Ruby中也适用于我:
selected = files.select { |f| f =~ /_x\d+_y\d+\.npy/ }
Python代码有什么问题?
只需使用
search
-因为match从字符串的开始到结束(即整个)开始匹配,并搜索字符串中的任何位置。输出-
^{} 等于
re.search('^regex')
或text.startswith('regex')
,但为regex版本。它只检查字符串是否以regex开头。因此,使用
re.search()
代替:输出:
如果您只想获得所有的} :
.npy
文件,只需使用^{^{} 在字符串的开头查找匹配项。您可以改用
re.search()
。相关问题 更多 >
编程相关推荐