python - 将每行列数不规则的矩阵与python中的列表进行比较
问题描述
我有一个主文件,它有大约 41k 行(条目),每行的列数可变。
AC_peg_0698__[locus_tag=Adeh_0700] Bac_export_2
AC_peg_0699__[locus_tag=Adeh_0701] Bac_export_1
AC_peg_0700__[locus_tag=Adeh_0702] Bac_export_3
AC_peg_0701__[locus_tag=Adeh_0703] FliP
AC_peg_0702__[locus_tag=Adeh_0704] FliO
AC_peg_0703__[locus_tag=Adeh_0705] FliMN_C
AC_peg_0704__[locus_tag=Adeh_0706] YscJ_FliF
AC_peg_0705__[locus_tag=Adeh_0707] No_Domain
AC_peg_0706__[locus_tag=Adeh_0708] No_Domain
.
.
.
AC_peg_1378__[locus_tag=Adeh_1382] CheR_N CheR
AC_peg_1379__[locus_tag=Adeh_1383] Response_reg CheB_methylest
AC_peg_1380__[locus_tag=Adeh_1384] MotB_plug OmpA
AC_peg_1381__[locus_tag=Adeh_1385] MotA_ExbB
AC_peg_1382__[locus_tag=Adeh_1386] FlbD
AC_peg_1383__[locus_tag=Adeh_1387] Flg_bb_rod FlaE Flg_bbr_C
AC_peg_1384__[locus_tag=Adeh_1388] FlgD FlgD_ig
我有一个列表,我必须与上面的文件进行比较。此列表中大约有 38 个元素。
Bac_export_1
Bac_export_2
Bac_export_3
Bac_export_4
ChapFlgA
CheC
FHIPEP
Flg_hook
FlgD
FlgD_ig
FlgI
FlgI
FlgM
FlgN
FlhC
FlhD
FlhE
FliD
FliD
FliG
FliH
FliJ
FliL
FliM
FliN_N
FliO
FliP
FliS
FliT
FliW
FliX
Glucosaminidase
MotA_ExbB
MotB_plug
MotY_N
Rod-binding
T3SS_ATPase_C
YscJ_FliF
我想提取与列表中任何元素匹配的所有行。例如,对于列表中的元素 MotB_plug,我想提取与其匹配的所有行并为其创建一个单独的文件。我想要列表中每个元素的单独文件。
最终文件看起来有点像这样:
ES114__peg_0708___VF_0715 MotB_plug OmpA
ES114__peg_2773___VF_A0187 MotB_plug OmpA
MJ11__peg_0701___VFMJ11_RS10770 MotB_plug OmpA
MJ11__peg_2789___VFMJ11_RS01075 MotB_plug OmpA
SR5__peg_0707___VFSR5_RS03610 MotB_plug OmpA
SR5__peg_2770___VFSR5_RS14190 MotB_plug OmpA
LFI1238__peg_0951___VSAL_RS05180 MotB_plug OmpA
此文件已使用 motB_plug 提取所有条目
解决方案
也许不是超级高效,但可以完成工作:
with open("protein_domain.txt") as f:
lst = list()
for el in f:
lst.append(el.strip())
for pattern in lst:
with open(f"{pattern}.txt", "w") as new_file:
with open("data.txt") as f:
for line in f:
if pattern in line:
new_file.write(line)
为了更有效但累积的结果:
grep -E "Bac_export_1|Bac_export_2|Bac_export_3|Bac_export_4|ChapFlgA|CheC|FHIPEP|Flg_hook|FlgD|FlgD_ig|FlgI|FlgI|FlgM|FlgN|FlhC|FlhD|FlhE|FliD|FliD|FliG|FliH|FliJ|FliL|FliM|FliN_N|FliO|FliP|FliS|FliT|FliW|FliX|Glucosaminidase|MotA_ExbB|MotB_plug|MotY_N|Rod-binding|T3SS_ATPase_C|YscJ_FliF" data.txt > output.txt
推荐阅读
- c++ - 负载可以在获取操作下方滑动/存储可以在 C++ 中的发布上方滑动吗?
- php - 如何输出自定义的while循环php
- java - 为什么 Java 不能读取 UTF-8 文件中的这个 unicode 字符?
- javascript - 使用 Jackson 和 PrintWriter 的 JSON 输出
- php - 如何在没有运行时超过 30 秒错误的情况下循环遍历此嵌套数组
- sql - 除自定义工作日外的所有记录的总和日期差异
- python - Python使用字符串值作为类/代码的一部分
- javascript - 将多个选中复选框的值传递到多个相应的输入字段
- python - 我无法在 Matplotlib 中同时获得多个实时绘图 - Python
- jboss - 什么时候在 Oracle ATG 中创建 Jsession id 是来自 JBOSS 还是 ATG?