[英]read specific lines from a file using 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
...
__________________________________________________
现在我想使它像:
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
...
即删除所有其他字符。 我尝试使用:
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')
无法正常工作。 但是到上一行为止,一切都很好。
看起来您只在看以PAIR
开头的行,所以为什么不这样简单:
with open('data.txt') as infp:
for line in infp:
line = line.strip()
if line.startswith('PAIR'):
print(line)
会给:
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
此输出将删除前3个空格,如果需要的话,将它们重新添加起来很简单。
注意 :使用with
将在完成操作或遇到异常时自动为您关闭文件。
除了@Levon的解释之外,由于文件对象支持迭代器协议,并且根据文件的大小,可以使用列表推导:
[l for l in open('test.txt') if l.startswith('PAIR')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.