天青城子 2023-07-03 14:57 采纳率: 60%
浏览 32
已结题

如何用Python脚本筛选tsv文件列相同值的行,并将其储存为新的tsv文件

针对data.tsv文件,将第一列相同基因ID对应的第二列数据合并成out.tsv文件
下图一是data.tsv文件的部分内容,图二是out.tsv文件的部分内容,
求问如何在脚本中指定文件的列内容数和筛选,还有就是筛选后如何如何储存新文件

img

img

  • 写回答

1条回答 默认 最新

  • 梦幻精灵_cq 2023-07-04 07:20
    关注

      将tsv文本数据中的数据以字典的方式统计,最后写入out.tsv。

    • *.tsv文本数据及代码执行后输出的out.tsv文本内容

      img

    • python 代码

    #!/sur/bin/nve python
    # coding: utf-8
    from random import choices
    from random import sample
    
    
    mypath = '/sdcard/001/'
    keys = 'ABC'
    chars = 'abcdefghigklmnopqrstuvwxyz'
    
    with open(f"{mypath}test.tsv", 'w') as f: # 随机写入tsv文本18行
        for i in range(18):
            f.write(f"{''.join(sample(keys, k=2))}{' '*4}{''.join(choices(chars, k=4))}\n")
    
    count = {}
    for line in open(f"{mypath}test.tsv").read().split('\n'):
        
        if not line:
            break
            
        a, b = line.split()
        lis = count.get(a, [])
        lis.append(b)
        count[a] = lis
    
    
    with open(f"{mypath}out.tsv", 'w') as f: # 统计数据写入文本。
        
        for k,v in count.items():
            f.write(f"{k}{' '*4}{';'.join(v)}\n")
            
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 修改了问题 7月3日
  • 创建了问题 7月3日

悬赏问题

  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?