首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python regex匹配的文件名

python regex匹配的文件名
EN

Stack Overflow用户
提问于 2016-02-15 00:37:59
回答 1查看 84关注 0票数 0

我有以下文件名,并希望将它们分组:

Group1:

代码语言:javascript
复制
C7_S6_L001.sorted.bam
C7_S6_L002.sorted.bam
C7_S6_L003.sorted.bam
C7_S6_L004.sorted.bam

Group2:

代码语言:javascript
复制
CL3_S8_L001.sorted.bam
CL3_S8_L002.sorted.bam
CL3_S8_L003.sorted.bam
CL3_S8_L004.sorted.bam

Group3:

代码语言:javascript
复制
CL5-B1_S4_L001.sorted.bam
CL5-B1_S4_L002.sorted.bam
CL5-B1_S4_L003.sorted.bam
CL5-B1_S4_L004.sorted.bam

正则表达式将如何查找它?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 00:42:30

假设分组键是_L之前的所有内容,以及文件名开头的数字,则可以使用以下正则表达式来使用保存组捕获组键

代码语言:javascript
复制
([A-Z0-9-_]+)_L\d{3}\.sorted\.bam

使用 collection的工作示例

代码语言:javascript
复制
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)

指纹:

代码语言:javascript
复制
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']})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35399834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档