gpt4 book ai didi

Python正则表达式将字符串匹配到字典中

转载 作者:行者123 更新时间:2023-11-30 21:59:57 25 4
gpt4 key购买 nike

我的目录中有三个文件,我希望它们与字典的字符串列表相匹配。

dir 中的文件如下所示,

DB_ABC_2_T_bR_r1_v1_0_S1_R1_001_MM_1.faq.gz
DB_ABC_2_T_bR_r1_v1_0_S1_R2_001_MM_1.faq.gz
DB_DEF_S1_001_MM_R1.faq.gz
DB_DEF_S1_001_MM_R2.faq.gz

列表的文件名部分为,

ABC
DEF

这就是我尝试过的,

import os
import re

dir='/user/home/files'
list='/user/home/list'
samp1 = {}
samp2 = {}

FH_sample = open(list, 'r')
for line in FH_sample:
samp1[line.strip().split('\n')[0]] =[]
samp2[line.strip().split('\n')[0]] =[]
FH_sample.close()
for file in os.listdir(dir):
m1 =re.search('(.*)_R1', file)
m2 = re.search('(.*)_R2', file)
if m1 and m1.group(1) in samp1:
samp1[m1.group(1)].append(file)
if m2 and m2.group(1) in samp2:
samp2[m2.group(1)].append(file)

我希望上面的脚本找到 m1 和 m2 中的匹配项并将它们收集到字典 samp1samp2 中。但上面的脚本在 if 循环 中没有找到匹配项。现在 samp1samp2 为空。

这就是 samp1samp2 的输出:

{'ABC': [DB_ABC_2_T_bR_r1_v1_0_S1_R1_001_MM_1.faq.gz, DB_ABC_2_T_bR_r1_v1_0_S1_R2_001_MM_1.faq.gz], 'DEF': [DB_DEF_S1_001_MM_R1.faq.gz, DB_DEF_S1_001_MM_R2.faq.gz]} 

任何帮助将不胜感激

最佳答案

很多这样的代码您可能不需要。您可以查看 list 中的子字符串是否在 in dir 中。

下面的代码以列表的形式读入数据。您似乎已经完成了此操作,因此只需将 files 替换为您从 dir 读取的文件名并替换 st 即可> 以及 list 中的子字符串(您不应该将其用作变量名,因为它实际上在 Python 中用于其他用途)。

files = ["BSSE_QGF_1987_HJUS_1_MOHUA_2_T_bR_r1_v1_0_S1_R1_001_MM_1.faq.gz",
"BSSE_QGF_1967_HJUS_1_MOHUA_2_T_bR_r1_v1_0_S1_R2_001_MM_1.faq.gz",
"BSSE_QGF_18565_H33HLAFXY_1_MSJLF_T_bulk_RNA_S1_R1_001_MM_1.faq.gz",
"BSSE_QGF_18565_H33HLAFXY_1_MSJLF_T_bulk_RNA_S1_R2_001_MM_1.faq.gz"]
my_strings = ["MOHUA", "MSJLF"]

res = {s: [] for s in my_strings}
for k in my_strings:
for file in files:
if k in file:
res[k].append(file)
print(res)

关于Python正则表达式将字符串匹配到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54443371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com