python - 循环遍历变量 URL (Python)
问题描述
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 循环,但由于我不熟悉更改变量在 URL 中,我不知道如何进行。
对不起,如果这是一个幼稚的问题。任何帮助,将不胜感激。
解决方案
如果您已经拥有文件中的所有参数,则可以遍历该数据并发出这样的请求(我使用列表,因为您没有显示您的代码如何从文件中读取数据):
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)
通过dict
使用查询参数传递 a ,urlopen()
负责正确编码所有参数(使用=
and &
)。
如果urllib
有点复杂,您可以尝试使用 pythonrequests
库,根据我的经验,它使用起来要好得多(但它是第三方库,不是内置的)。
推荐阅读
- xamarin.android - 在 FFImageLoading 如何将图像加载到 Xamarin Android 的内存中?
- sql - 如何在 mssql 中将 13 位时间戳转换为日期和时间格式
- excel - Excel VBA将换行文本粘贴到excel的一个单元格中
- jquery - 使用“追加”时如何编写带有多个双引号的img元素
- c# - 如何在 Lambda LINQ 中排除属性而不是选择
- c - 信号处理程序在c中更改全局变量
- python - Python从没有标签的JSON中提取数据?
- spring-boot - 带有 2 路 ssl 证书的 resttemplate
- java - 我不明白的谷歌播放控制台中的 ANR(应用程序无响应)崩溃
- kotlin - Kotlin 类型自动装箱与原始