你好,我有一个这样的文本文件:
>NM_145914.2:212
TCTGATGGTAAAAGTCGAGGAGAAAGAAGA
>NM_000614.3:1086
ATTCAATTTAAAATCAGACTCTTTAGTTGA
>NM_012096.2:2808
CAGTTAAGGTTTCAAATTGTGGCAGGTGGT
>NM_173465.3:1682
GTGCGTCGGGTGAGAGAGGCCCCAGCGGCC
>NM_001198858.1:490
CAACCACCACAACCTGCTGGTCTGCTCGGT
......more lines in same style......
我想要的是:
从上面的文件中读取,将第 1,3,5,7 行 ... 设为字典键,将第 2,4,5,8 行 ... 设为字典值。
我的代码是:
query_dict = {}
nameAt = 1
sequenceAt = 2
while name in range(totalLines):
line1 = linecache.getline(filename, nameAt)
line2 = linecache.getline(filename, sequenceAt)
query_dict[line1] = line2
nameAt = nameAt + 2
sequenceAt = sequenceAt + 2
该代码有效,但速度很慢,因为我的文本文件的最少行是 200,000 行。有没有人有更好的方法来做到这一点?
非常感谢。
==============添加后续问题==================
这是 fastq 格式,每次读取 4 行(记录):
@>NM_052972.2:11:1054:1780:889
CTTCGACATCTCCGGCAACCCCTGGATCTG
+>NM_052972.2:11:1054:1780:889
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII
@>NM_080660.3:12:914:1802:542
CCTGTATGGCTACTGCAACCTCAAGGATAA
+>NM_080660.3:12:914:1802:542
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII
@>NM_176814.3:712:2706:4242:98
ACAGAGTAAAAGAGAGGCTGACTTAATAAA
+>NM_176814.3:712:2706:4242:98
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII
...... more lines in same style ......
我想创建一个字典,键是第 1 行,值是每 4 行记录中的第 2 行。
字典看起来像:
{'@>NM_052972.2:11:1054:1780:889':'CTTCGACATCTCCGGCAACCCCTGGATCTG',
'@>NM_080660.3:12:914:1802:542':'CCTGTATGGCTACTGCAACCTCAAGGATAA',
'@>NM_176814.3:712:2706:4242:98':'ACAGAGTAAAAGAGAGGCTGACTTAATAAA',
..... more keys and values ......
}
谢谢。