我有两个名为的文件:
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)
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
行inp1
替换为inp2
文件中的行,其中包含if 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
答案 0 :(得分:0)
不确定我是否理解了您的问题,但据我了解您必须执行以下操作:
将inp2文件的每一行保留在字符串列表中。在inp1文件中搜索以“recev:”开头的行。每次如果包含“recev:”的行满足条件“if len(lines)== 5”,则将该行替换为保留列表的第一个元素。每次在inp1文件中找到包含行的“recev:”时,删除列表的第一个元素。
答案 1 :(得分: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