-1

我有 2 个文件名为:

输入1:

recev: Na Sod B 1    
                accept: F Fluorin B 91           R-A = 12.44 
                        I Iodin  C 22            R-A = 22.11 
                        Cl chlorine D 21         R-A = 24.21  

recev: Mg Mag C 3 
                accept: F Fluorin B 82          R-A = 91.00
                        Mn Mangan C 23          R-A = 12.30
...(100+ lines)

输入2:

recev: Na Sod B 1   H-atom: H Hydrogen D 2  
recev: Mg Mag C 3   H-atom: H Hydrogen N 3  
...(100+lines)

现在,我试图用文件中的行替换recev行,并放置一个搜索条件,如. 但请就如何有效替换维护文件中的所有格式提出任何想法。inp1inp2if len(lines) == 5 : (then replace)inp1

期望的结果:

recev: Na Sod B 1  H-atom: H Hydrogen D 2  
             accept: F Fluorin B 91           R-A = 12.44 
                     I Iodin  C 22            R-A = 22.11 
                     Cl chlorine D 21         R-A = 24.21  

recev: Mg Mag C 3  H-atom: H Hydrogen N 3
             accept: F Fluorin B 82          R-A = 91.00
                     Mn Mangan C 23          R-A = 12.30
4

2 回答 2

0

不确定我是否正确理解了您的问题,但据我了解,您必须执行以下操作:

将 inp2 文件的每一行保存在字符串列表中。在 inp1 文件中搜索以“recev:”开头的行。每次如果包含“recev:”的行满足条件“if len(lines) == 5”,则将该行替换为保留列表的第一个元素。每次在 inp1 文件中找到包含“recev:”的行时,删除列表的第一个元素。

于 2013-08-13T12:16:33.490 回答
0

没有完全优化,但这应该可以

 #!/usr/bin/python
 import re
 with open('inp1') as f1, open('inp2') as f2:
     inp1 = f1.readlines()
     inp2 = f2.readlines()

 dict1 = {l.split('   ')[0] : l.split('   ')[1] for l in inp2}

 for line in inp1:
     line = line.rstrip()
     if re.match('recev:',line):
          if dict1.has_key(line):
              line = ' '.join([line, dict1[line].rstrip()])
     print line #write this line to file
于 2013-08-13T12:51:25.850 回答