我有以下文件名,并希望将它们分组:
Group1:
C7_S6_L001.sorted.bam
C7_S6_L002.sorted.bam
C7_S6_L003.sorted.bam
C7_S6_L004.sorted.bamGroup2:
CL3_S8_L001.sorted.bam
CL3_S8_L002.sorted.bam
CL3_S8_L003.sorted.bam
CL3_S8_L004.sorted.bamGroup3:
CL5-B1_S4_L001.sorted.bam
CL5-B1_S4_L002.sorted.bam
CL5-B1_S4_L003.sorted.bam
CL5-B1_S4_L004.sorted.bam正则表达式将如何查找它?
提前谢谢你。
发布于 2016-02-15 00:42:30
假设分组键是_L之前的所有内容,以及文件名开头的数字,则可以使用以下正则表达式来使用保存组捕获组键
([A-Z0-9-_]+)_L\d{3}\.sorted\.bam使用 collection的工作示例
from collections import defaultdict
from pprint import pprint
import re
filenames = [
"C7_S6_L001.sorted.bam",
"C7_S6_L002.sorted.bam",
"C7_S6_L003.sorted.bam",
"C7_S6_L004.sorted.bam",
"CL3_S8_L001.sorted.bam",
"CL3_S8_L002.sorted.bam",
"CL3_S8_L003.sorted.bam",
"CL3_S8_L004.sorted.bam",
"CL5-B1_S4_L001.sorted.bam",
"CL5-B1_S4_L002.sorted.bam",
"CL5-B1_S4_L003.sorted.bam",
"CL5-B1_S4_L004.sorted.bam"
]
pattern = re.compile(r"([A-Z0-9-_]+)_L\d{3}\.sorted\.bam")
grouped = defaultdict(list)
for filename in filenames:
match = pattern.search(filename)
if match:
key = match.group(1)
grouped[key].append(filename)
pprint(grouped)指纹:
defaultdict(<class 'list'>,
{'C7_S6': ['C7_S6_L001.sorted.bam',
'C7_S6_L002.sorted.bam',
'C7_S6_L003.sorted.bam',
'C7_S6_L004.sorted.bam'],
'CL3_S8': ['CL3_S8_L001.sorted.bam',
'CL3_S8_L002.sorted.bam',
'CL3_S8_L003.sorted.bam',
'CL3_S8_L004.sorted.bam'],
'CL5-B1_S4': ['CL5-B1_S4_L001.sorted.bam',
'CL5-B1_S4_L002.sorted.bam',
'CL5-B1_S4_L003.sorted.bam',
'CL5-B1_S4_L004.sorted.bam']})https://stackoverflow.com/questions/35399834
复制相似问题