【发布时间】:2020-11-20 10:40:04
【问题描述】:
我有一个查找 DNA 匹配项的程序。我们得到了一个单行文本文件,用于查找最长的 STR(短串联重复)序列,然后将结果与一个 .cvs 文件的数据库进行匹配,如下所示:
> name,AGATC,TTTTTTCT,AATG,TCTAG,GATA,TATC,GAAA,TCTG
> Albus,15,49,38,5,14,44,14,12
> Draco,9,13,8,26,15,25,41,39
> Ginny,37,47,10,23,5,48,28,23
> Harry,46,49,48,29,15,5,28,40
在获得最长序列量的结果(作为整数)后,我试图在这个 cvs 文件中找到一个匹配项,并在我找到 STR 的匹配数字时打印第一列(名称)中的值。我正在使用print() 检查程序,它会打印“不匹配”,直到匹配的名称然后停止并出现以下错误代码:
Traceback (most recent call last):
File "dna.py", line 37, in <module>
main()
File "dna.py", line 27, in main
print(row[0])
KeyError: 0
我的程序可能找到了匹配项,但无法打印出来而不是退出。请你帮助我好吗? TIA
def main():
for i in SEQ.keys():
SEQ[i] = find_longest_sequence(i)
print(SEQ.items())
with open(sys.argv[1],'r') as f:
db = csv.DictReader(f)
for row in db:
if int(row['AGATC']) == SEQ['AGATC'] and int(row['AATG']) == SEQ['AATG'] and int(row['TATC']) == SEQ['TATC']:
print(row[0])
else:
print("No match")
【问题讨论】:
-
你试过 print(row['name']) 吗?
-
@rodvictor 是的,我试过了,但也没有用。现在我正在为 cvs 文件的 eash 行创建一个字典列表,我将通过比较两个字典来比较结果。希望它有效
-
@rodvictor 肯定不起作用,因为结果只包含 STR 数字,cvs 文件也有名称行:/我可以比较字典的值吗?
标签: python python-3.x csv dictionary