import zipfile
from collections import defaultdict
from pprint import pprint
import re
from glob import glob
filenames = glob("/batch3/*C*_paired_fastqc.zip")
pattern = re.compile(r"([A-Z0-9-_]+)_L\d{3}\.*")
grouped = defaultdict(list)
for filename in filenames:
match = pattern.search(filename)
if match:
key = match.group(1)
grouped[key].append(filename)
pprint(grouped)
for i, g in enumerate(sorted(grouped.keys())):
for f in grouped[g]:
print f
print "--------"
输出:文件名匹配不组
/batch3/0046-CL7_S7_L003_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L001_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L002_R2_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L003_R2_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L004_R2_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L001_R2_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L002_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L004_R1_001_output_paired_fastqc.zip
--------
/batch3/0047-CLI_S8_L002_R1_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L004_R2_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L002_R2_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L003_R2_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L004_R1_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L001_R2_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L003_R1_001_output_paired_fastqc.zip
/batch3/0047-CLI_S8_L001_R1_001_output_paired_fastqc.zip
不过,我想有:
/batch3/0046-CL7_S7_L001_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L001_R2_001_output_paired_fastqc.zip
---------
/batch3/0046-CL7_S7_L002_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L002_R2_001_output_paired_fastqc.zip
---------
/batch3/0046-CL7_S7_L003_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L003_R2_001_output_paired_fastqc.zip
---------
/batch3/0046-CL7_S7_L004_R1_001_output_paired_fastqc.zip
/batch3/0046-CL7_S7_L004_R2_001_output_paired_fastqc.zip
不幸的是,我无法弄清楚如何匹配文件名。
你所需的输出不会出现你输入对应。你试图完成什么? –
您的输出结果不正确......它具有多个相同的文件名。看起来你正在分组在S7,S8等......当你想要L001,L002等时,所以正则表达式选择了错误的部分。尝试''_L \ d {3} _“'来代替。 – tdelaney
是的,修复输出 – user977828