【问题标题】:Check if a value is between certain values in row of a file检查一个值是否在文件行中的某些值之间
【发布时间】:2020-11-03 14:00:52
【问题描述】:

我想读取一个文件并仅提取那些在第四列中包含一个范围内的数字的文件。

例如,在这一行中,我想知道 5240 是否介于 5220 和 5240 之间。

MTB_anc RefSeq  CDS 5240    7267    .   +   0   ID=cds4;Parent=gene4;Dbxref=Genbank:NP_214519.2,GeneID:887081;Name=NP_214519.2;Note=Belongs to the type II topoisomerase family.;gbkey=CDS;gene=gyrB;product=DNA gyrase subunit B;protein_id=NP_214519.2;transl_table=11

我想我应该列出该行的每个元素并索引该位置,但我不知道如何在字符串中搜索 int。

我正在使用 Python 2。

【问题讨论】:

  • 行中的每个元素由制表符分隔

标签: bioinformatics python-2.x


【解决方案1】:

你的方法很好。你快到了。
将字符串转换为整数时会出现错误:

lines = []
with open(fname) as fp:
    for line in fp:
        tokens = line.split('\t')
        try:
            value = int(tokens[3])
            if 5220 <= value <= 5240: 
                lines.append(tokens)
        except ValueError as err:
            continue

但也可以预先测试内容:

import re

lines = []
with open(fname) as fp:
    for line in fp:
        tokens = line.split('\t')
        if re.match(r'^\d+$', tokens[3]) and 5220 <= int(tokens[3]) <= 5240:
            lines.append(tokens)

对于更合适的解决方案,问题是列可以采用哪些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2018-08-04
    • 2017-05-26
    相关资源
    最近更新 更多