循环遍历变量URL(Python)

时间:2019-03-06 22:52:11

标签: python loops url dna-sequence

Python newby在这里。

我正在开发一个简单的DNA序列搜索程序。主要思想是从NCBI数据库中获得特定基因组和起始点的不同序列。到目前为止,我可以对一个基因组和一个特定位置进行简单的搜索:      `

  import urllib

  genome="NC_009089.1"
  start="359055"
  end= "359070"

  link = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=%s&rettype=fasta&seq_start=%s&seq_stop=%s" % (genome, start, end)


  f = urllib.urlopen(link)
  myfile = f.read()
  print(myfile).splitlines()[1]
                              `

这是我得到的输出(该位置的顺序):

AGTAAAACGGTTTCCT

现在,我想同时从不同的基因组中找到几个具有不同起始点的序列,并返回所有找到的序列。我尝试将数据导入到带有第一组基因组的csv中,从第二列开始,在第三列中结束,然后使用打开的文件进行for循环,但是由于我不熟悉更改变量在网址中,我不知道如何继续。

很抱歉,如果这是一个幼稚的问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果文件中已经有所有参数,则可以遍历该数据并发出这样的请求(我使用列表,因为您没有向代码显示如何从文件中读取数据):

import urllib
url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi'

for genome, start, end in zip(genome_list, start_list, end_list):
    data = {
        'db': 'nuccore',
        'rettype': 'fasta',
        'genome': genome,
        'start': start,
        'end': end,
    }
    f = urllib.urlopen(url, data)

通过使用查询参数传递dicturlopen()负责正确编码所有参数(使用=&)。


如果urllib有点复杂,您可以尝试python requests库,根据我的经验,使用它会更好(但它是第三方库,不是内置库) )。