Python中的正则表达式匹配文件夹中的所有文件

时间:2014-12-04 19:21:32

标签: python regex path

我对正则表达式非常不满意。 我正在尝试根据文件名找到文件夹中的文件。大多数文件名的格式为GSE1234_series_matrix.txt,因此我一直在使用os.path.join("files", GSE_num + "_series_matrix.txt")。但是,一些文件的名称类似于GSE1234-GPL22_series_matrix.txt。我不知道如何处理所有以GSE编号开头并以_series_matrix.txt结尾的文件,可能在一个语句中。我真的很感激任何帮助。

编辑 - 我将这些系列矩阵文本文件放在一个文件夹中,为此我提到了使用路径连接的路径。我还输入了一个文本文件,其中包含所有GSE编号。这样它只为选定的GSE编号运行脚本。因此,文件夹中的所有内容都不在GSE num列表中,并且列表中只有GSE编号,而不是GPL。例如,文件GSE1234-GPL22_series_matrix.txt将是列表中的GSE1234。

3 个答案:

答案 0 :(得分:4)

完全使用正则表达式。

good_filenames = [name for name in filenames if name.startswith("GSE") and name.endswith("_series_matrix.txt")]

答案 1 :(得分:1)

凯文的答案很棒!如果你想使用正则表达式,你可以这样做:

^GSE\d+.*series_matrix.txt$

这将匹配以GSE和数字开头的任何内容,并以series_matrix.txt结尾

答案 2 :(得分:0)

你可以使用glob。根据您在模式中包含的路径的数量,您根本不必担心使用os.path.join

import glob
good_filenames = glob.glob('/your/path/here/GSE*_series_matrix.txt')

返回:

['/your/path/here/GSE1234_series_matrix.txt',
 '/your/path/here/GSE1234-GPL22_series_matrix.txt']