查找包含点和点后变化字符串的模式的文件

时间:2017-02-04 04:36:35

标签: python regex file-handling

我想在HGG_LGG的子文件夹中搜索文件VSD.Br.XX.O.MR_T1.[some varying number].*。例如,在HGG_LGG的子文件夹中搜索VSD.Br.XX.O.MR_T1.25987.mha。我可以只使用VSD.Br.XX.O.MR_T1.*这样做但问题是有VSD.Br.XX.O.MR_T1c.[some varying number] .*这样的文件,我不想扫描。简而言之,我想在T1之后使用整个字符串(包括点(。)),然后在该字符串上应用通配符.*。以下是代码。我尝试使用\\来转义点但是没有用matches仍然是空的。

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
    for filename in fnmatch.filter(filenames, 'VSD.Br.XX.O.MR_T1\\..*'):
        matches.append(os.path.join(root, filename))

1 个答案:

答案 0 :(得分:0)

这有点棘手。为了找到VSD.Br.XX.O.MR_T1c.[some varying number] .*形式的所有文件,所以包含倒数第二个点,然后是一些变化的字符串,然后是保存文件的所有扩展,我们需要使用注释中指向的正则表达式。

直接使用VSD.Br.XX.O.MR_T1。*确实获取了其他文件。这是截图显示相同的。

Refrence

以下解决方案为我工作。

import os
import re

matches = []

for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
    for filename in [f for f in filenames if re.match('VSD.Brain.XX.O.MR_T1\\..*', f)]:
        matches.append(os.path.join(root, filename))

感谢enter image description here在评论中指出