Python使用defaultdict读取文件各列的方法

715次阅读  |  发布于5年以前

本文实例讲述了Python使用defaultdict读取文件各列的方法。分享给大家供大家参考,具体如下:


    #!/usr/bin/python
    """USAGE: python *.py align_SNP_site out_file"""
    import sys
    #import time
    from collections import Counter
    #t0=time.clock()
    info=open(sys.argv[1])
    fast=sys.argv[2]
    d_c = {}
    d1={}
    d2={}
    for line in info:
        cols=line.strip().split("\t")
        if cols[0] == "SNP pattern":
            continue
        else:
            d1.setdefault(cols[4],[]).append(cols[1])
            d2.setdefault(cols[7],[]).append(cols[1])
        #d1.setdefault(cols[0],[]).append(cols[5])
        #d2[cols[0]] = "\t".join(cols[0:3])
    info.close()
    print len(d1)
    print len(d2)
    my_list=[]
    ref_fa = open("some_example.fasta", 'r')
    for i in ref_fa.readlines():
        if i.startswith(">"):
            my_list.append(i.rstrip())
    ref_fa.close()
    print len(my_list)
    #sys.exit()
    result = open(fast,'w')
    for k,v in d1.iteritems():
        cnt1 = Counter(v)
        #print cnt1
        result.write("%s\t" % k)
        for i in sorted(cnt1.items(), key = lambda x: x[1], reverse=True):
            result.write("%s\t%d\t"%(i[0],i[1]))
        result.write("\n")
    for k,v in d2.iteritems():
        cnt2 = Counter(v)
        #print cnt2
        result.write("%s\t" % k)
        for i in sorted(cnt2.items(), key = lambda x: x[1], reverse=False):
            result.write("%s\t%d\t"%( i[0],i[1]))
        result.write("\n")
    #t1=time.clock()
    #print (t1-t0)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python URL操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8