Проверить, находится ли значение между определенными значениями в строке файла - PullRequest
0 голосов
/ 14 июля 2020

Я хочу прочитать файл и извлечь только те файлы, которые содержат число между диапазоном в четвертом столбце.

Например, в этой строке я хотел бы знать, находится ли 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.

1 Ответ

0 голосов
/ 15 июля 2020

Ваш подход хорош. Вы почти там. Ошибка может быть обнаружена при преобразовании строки в целое число:

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)

Для более подходящего решения вопрос возникает вопрос о том, какие значения могут принимать столбцы.

...