Загрузка только определенных строк из онлайн-файла .txt - PullRequest
0 голосов
/ 15 мая 2018

Аннотации генома хранятся в больших текстовых файлах, например, https://www.ebi.ac.uk/ena/data/view/FO203355&display=textc

Я хочу извлечь только строки, начинающиеся с "FT".Так как мне нужно извлечь «FT» из тысяч этих файлов, было бы невозможно загрузить целые файлы и извлечь нужные строки вручную.

Существует ли какая-либо терминальная или Python-конструкция для этого?В конечном итоге я хочу создать большой (Python) кадр данных для панд.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Поскольку вы в конечном итоге намереваетесь использовать pandas, все, что вам нужно, это передать данные в ваш скрипт и отфильтровать нужные вам строки. Самый простой способ - использовать модуль requests в потоковом режиме, а затем обрабатывать удаленные данные как поток файлов, т. Е .:

.
import requests

url = "https://www.ebi.ac.uk/ena/data/view/FO203355&display=text"

with requests.get(url, stream=True) as r:  # open a streaming request
    for line in r:  # iterate over the stream line by line
        if line[:2] == "FT":  # check if a line begins with `FT`
            print(line)  # or do whatever you want with the line

Если вы просто хотите сохранить данные, вы можете переслать отфильтрованную строку в поток вывода файла:

import requests

url = "https://www.ebi.ac.uk/ena/data/view/FO203355&display=text"

with requests.get(url, stream=True) as r, open("output.dat", "w") as f:
    for line in r:  # iterate over the stream line by line
        if line[:2] == "FT":  # check if a line begins with `FT`
            f.write(line)  # write the line to output.dat

Возможно, вы захотите создать свой фрейм данных и вместо этого непосредственно проанализировать строку в нем, однако это зависит от того, как вы хотите проанализировать свои данные, так что это упражнение я оставлю вам.

0 голосов
/ 15 мая 2018

Вы можете использовать curl и grep. Вам все равно нужно загрузить весь файл, если серверный API ebi.ac.uk не обеспечивает фильтрацию на стороне сервера.

curl 'https://www.ebi.ac.uk/ena/data/view/FO203355&display=text' | grep '^FT' > lines.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...