【问题标题】:associate dictionary to a .txt file [closed]将字典关联到 .txt 文件 [关闭]
【发布时间】:2014-01-22 17:18:26
【问题描述】:

我在 file1 中创建了一个 contigs 及其长度的字典。 我也有 file2,它是表格格式的爆炸输出,其中包含 contig 对齐(但不是全部)和一些附加信息,如匹配开始和结束的位置等。 为了计算查询和主题覆盖率,我需要将这些长度从 file1 关联到 file2 中的长度。 怎么做? 谢谢

【问题讨论】:

  • 输入和所需输出的示例
  • 如果您可以发布文件 1 和文件 2 的样本以提供更好的想法,那就太好了。

标签: python dictionary associations output blast


【解决方案1】:

假设 file1 是:

contig1 134
contig2 354
contig3 345

你的脚本看起来像

import re

contigDict={}
with open('file1') as c1:
    text=c1.readlines()
for line in text:
    key,value = line.split()
    contigDict[key]=value
with open('file2') as c2:
    scrambled_text=c2.read()

contigs = re.findall(r'contig\d+',scrambled_text)
output = {}
for contig in contigs:
    output[contig]=contigDict[contig]
with open('file3',w) as w:
    for key in output.keys():
        w.write(key+'\t'+output[key]+'\n')

【讨论】:

  • 非常感谢,但可能是我表达得不好,我再试一次。我有一个包含 contigs 列表及其长度的文件,contig1 134 contig2 354 contig3 345... contig 200000 320 在文件 1 中。现在在我的文件 2 中,我有 contigs,但是混乱和重复,比如说 contig3、contig3、contig4 , contig 7, contig 65 contig65 等等,没有长度。所以我想从 file1 中检索长度并关联到 file2 中的相应 contig。
  • 只有最后一个结果是什么意思?它不是对整个文档进行迭代吗?
  • 由于某种原因它没有迭代,但我现在让它工作了......谢谢它完美地工作!只是想问一下我是否有蛋白质名称而不是'contig',即 tr|B5TK38|B5TK38_TRIDB,明显不同的蛋白质不同,我如何在re.findall中搜索它?有可能吗?
  • 当然,谷歌搜索 python 正则表达式
  • 完美,非常感谢!
【解决方案2】:

这是有效的

import re
r=open('result.txt','w')
subjectDict={}
with open('file1.txt') as c1:
    text=c1.readlines()
for line in text:
    key,value = line.split()
    subjectDict[key]=value
with open('file2.txt') as c2:
    lines=c2.readlines()
for line in lines:
    new_list=re.split(r'\t+',line)
    s_name=new_list[0]
    subjects = re.findall(r'contig\d+',s_name)
    output = {}
    for subject in subjects:
        output[subject]=subjectDict[subject]
        r.writelines(subjectDict[subject]+'\n')

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2015-02-03
    • 2018-09-06
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多