如何从文件中读取特定行
How to read in specific lines from file
我有一个 FASTA 文件,它看起来像这样:
我想要这个:
sequence1: ATGCACCGT
sequence2: GACCTAGCA
结果。
我该怎么做?
编辑:
我会尝试重新制定它,
所以我有一个包含多行的 (fasta) 文件。
有些行的第一个字符是特殊字符 (>)。我不需要这些行,但这些行显示了第一个序列的结束位置和另一个序列的开始位置。
我想把它读成两个单独的字符串
first string 是第一个序列,second 是第二个。
但我不知道如何告诉 pycharm 我想读到 > 符号,然后其余的转到另一个字符串,直到下一个 > 符号...
with open('data', 'r') as f:
s = [x.strip() for x in f]
for i, el in enumerate(s):
if i % 2 == 0:
s[i] = 'sequence' + str(i+1)
print(s)
['sequence1', 'ATGCACCGT', 'sequence3', 'GACCTAGCA']
我查看了维基百科上的 FASTA 规范。看起来长序列可以跨越多行。在那种情况下,我假设您希望将这些行连接起来。它还表示信息行以“>”开头,但也可以以“;”开头。假设文件足够小,可以完全读入内存,我想出了以下使用正则表达式的方法:
import re
regex = re.compile(r"[;>](?P<description>[^\n]*)\n(?P<sequence>[^;>]+)")
with open("datafile.txt","r") as f:
sequences = regex.findall(f.read())
for i, info in enumerate(sequences):
description, sequence = info
print("sequence%d: %s" % (i, sequence.replace("\n","")))
我有一个 FASTA 文件,它看起来像这样:
我想要这个:
sequence1: ATGCACCGT
sequence2: GACCTAGCA
结果。
我该怎么做?
编辑: 我会尝试重新制定它,
所以我有一个包含多行的 (fasta) 文件。 有些行的第一个字符是特殊字符 (>)。我不需要这些行,但这些行显示了第一个序列的结束位置和另一个序列的开始位置。
我想把它读成两个单独的字符串 first string 是第一个序列,second 是第二个。
但我不知道如何告诉 pycharm 我想读到 > 符号,然后其余的转到另一个字符串,直到下一个 > 符号...
with open('data', 'r') as f:
s = [x.strip() for x in f]
for i, el in enumerate(s):
if i % 2 == 0:
s[i] = 'sequence' + str(i+1)
print(s)
['sequence1', 'ATGCACCGT', 'sequence3', 'GACCTAGCA']
我查看了维基百科上的 FASTA 规范。看起来长序列可以跨越多行。在那种情况下,我假设您希望将这些行连接起来。它还表示信息行以“>”开头,但也可以以“;”开头。假设文件足够小,可以完全读入内存,我想出了以下使用正则表达式的方法:
import re
regex = re.compile(r"[;>](?P<description>[^\n]*)\n(?P<sequence>[^;>]+)")
with open("datafile.txt","r") as f:
sequences = regex.findall(f.read())
for i, info in enumerate(sequences):
description, sequence = info
print("sequence%d: %s" % (i, sequence.replace("\n","")))