使用python从文件中读取特定行

2024-05-14 00:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下数据的文件:

   1xxy
   (1gmh)

[white line]
ahdkfkbbmhkkkkkyllllkkjdttyshhaggdtdyrrrutituy
[white line]  
   __________________________________________________
   Intra Chain:
   A 32
   __________________________________________________
   PAIR 1MNS HE 10 NM A ARG 33 OX1 3.22 32
   PAIR 1MNS UR 11 NM A ARG 33 OX2 3.21 12
   PAIR IMNS UK 32 NH A ASN 43 OZ1 5.21 22
   ...
   __________________________________________________

现在我想把它变成:

^{pr2}$

即删除所有其他字符。 我尝试使用:

inp = open('c:/users/rox/desktop/1UMG.out','r')
for line in inp:
    if not line.strip():      # to remove excess whit lines
       continue
    else:
       z = line.strip().replace('\t',' ')
       if z.startswith('PAIR'):
          print z
inp.close()

但是这个代码也没有给我输出。无法找出z.startswith('PAIR')不工作的原因。但到上一行还不错。在


Tags: 文件数据chainiflinearghestrip
2条回答

除了@Levon的解释,由于file对象支持迭代器协议,并且根据文件的大小,可以使用列表理解:

[l for l in open('test.txt') if l.startswith('PAIR')]

看起来您只看到以PAIR开头的行,那么为什么不这样简单:

with open('data.txt') as infp:
   for line in infp:
      line = line.strip()
      if line.startswith('PAIR'):
         print(line)

将提供:

^{pr2}$

此输出删除了前导的3个空格,如果需要,将它们重新添加进来是很简单的。在

注意:使用with将在完成操作或遇到异常时自动关闭文件。在

相关问题 更多 >