擅长:python、mysql、java
<p>您可以使用正则表达式从多行中提取所需的数据来实现这一点。由于只有两个样本,很难知道这一个是否匹配所有情况:您的一些数据可能不像样本所显示的那样规则</p>
<p>这不遵循<code>for line in file:</code>的一行一行模式,因为您的数据由一束行组成</p>
<pre><code>file = open('test.txt')
data = file.read()
rex = re.compile(r"(>> fbat -v1.+?\n).+?p-value\(2-sided\)\n-+\n(.+?)\n-", re.DOTALL)
for header, numbers in rex.findall(data):
print (header.rstrip(), numbers)
</code></pre>
<p>输出为</p>
<pre><code>>> fbat -v1 1:939467:A:G 0.400 0.240 0.816 4.14216178e-01
>> fbat -v1 1:941298:C:T 1:941301:G:A 1:941310:C:T 1:941324:G:A 0.333 0.444 0.500 6.17075077e-01
</code></pre>
<p>我顺便注意到您正在使用Python 2。除非这是一次性的,请考虑切换到Python 3。您不应该把时间花在学习Python 2上</p>