You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选并打印CSV文件中包含指定序列片段的所有行?

解决CSV序列片段匹配筛选问题

需求说明

我有一个包含基因名称和序列的CSV文件,需要实现:

  • 接收用户输入的序列片段
  • 打印所有序列中包含该片段的行

示例数据(CSV格式,假设表头为Gene和seq):

Gene,seq
Gene 1,ATGCGGTCTA
Gene 2,ACGCCCATGA
Gene 3,TCGAC

当输入片段GC时,预期输出:

Gene 1   ATGCGGTCTA
Gene 2   ACGCCCATGA

现有代码问题分析

你当前的代码存在以下问题:

  • 同时混用csv模块和pandas,逻辑冗余
  • 将所有序列拼接成单个字符串后查找索引,无法定位到具体的基因行
  • 变量名重复(s既用作输入的序列片段,又用作循环变量)
  • 缺失最终的筛选和输出逻辑

修正后的代码

import pandas as pd

# 读取CSV文件,确保表头正确(比如第一行是Gene,seq)
df = pd.read_csv('DATA.csv')

# 接收用户输入并统一转大写(匹配序列的大小写习惯)
search_type = input('what would you like to search?').lower()
if search_type == 'sequence':
    target_seq = input('Enter sequence : ').upper()
    # 筛选序列列中包含目标片段的行
    filtered_rows = df[df['seq'].str.contains(target_seq)]
    # 打印结果,格式对齐
    for _, row in filtered_rows.iterrows():
        print(f"{row['Gene']:<10} {row['seq']}")

代码说明

  1. 读取CSV:用pandas.read_csv直接读取文件,无需额外的csv模块
  2. 输入处理:将输入的片段转大写,确保和序列的大小写一致(如果你的序列是小写,可改为.lower())
  3. 筛选逻辑:用str.contains()直接在序列列中匹配目标片段,返回符合条件的所有行
  4. 输出格式:用格式化字符串对齐基因名称和序列,保证输出美观

注意事项

  • 确保你的CSV文件第一行是表头(比如Gene,seq),否则需要在read_csv中指定header=None并手动设置列名,例如:
    df = pd.read_csv('DATA.csv', header=None, names=['Gene', 'seq'])
    
  • 如果需要忽略大小写匹配,可以修改筛选条件为:
    filtered_rows = df[df['seq'].str.contains(target_seq, case=False)]
    

内容的提问来源于stack exchange,提问作者BScpj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:15:39