Python 读取不同的文本文件并删除相同的索引行
我不是python程序员。但我需要为软件制作一个输入文件。我有一个a.txt文件和b.txt文件,a.txt中的每一行都对应于b.txt中的一个“索引”。 a、 txt: b、 txt:Python 读取不同的文本文件并删除相同的索引行,python,Python,我不是python程序员。但我需要为软件制作一个输入文件。我有一个a.txt文件和b.txt文件,a.txt中的每一行都对应于b.txt中的一个“索引”。 a、 txt: b、 txt: #indexes: 0 0 0 1 -0.375E+04 0.382E+01 2 -0.375E+04 0.432E+01
#indexes: 0 0 0
1 -0.375E+04 0.382E+01
2 -0.375E+04 0.432E+01
3 -0.376E+04 0.353E+01
#indexes: 1 0 0
1 -0.635E+04 0.331E+01
2 -0.235E+04 0.238E+01
#indexes: 2 1 1
1 -0.735E+04 0.093E+01
#indexes: 3 2 2
1 -0.835E+04 0.331E+01
2 -0.035E+04 0.438E+01
#indexes: 4 2 2
1 -0.475E+04 0.331E+01
2 -0.365E+04 0.438E+01
我需要在a.txt的第8列中提取带有“ACC”的行,并将它们存储在新的a_new.txt中
a_new.txt:
0 0 0 L M L 41 ACC sh 1.008732
2 1 1 L M L 18 ACC sh 1.025172
3 2 2 L M L 17 ACC sh 1.017734
然后读取b.txt文件,找到“索引”行,查看该行中的数字是否与ACC行(前3行)相同,然后将该索引框存储在b_new.txt中:
#indexes: 0 0 0
1 -0.375E+04 0.382E+01
2 -0.375E+04 0.432E+01
3 -0.376E+04 0.353E+01
#indexes: 2 1 1
1 -0.735E+04 0.093E+01
#indexes: 3 2 2
1 -0.835E+04 0.331E+01
2 -0.035E+04 0.438E+01
b_new.txt:
#indexes: 0 0 0
1 -0.375E+04 0.382E+01
2 -0.375E+04 0.432E+01
3 -0.376E+04 0.353E+01
#indexes: 2 1 1
1 -0.735E+04 0.093E+01
#indexes: 3 2 2
1 -0.835E+04 0.331E+01
2 -0.035E+04 0.438E+01
如果有人能帮助我,我将不胜感激。花了几分钟时间:
import re
f = open('a.txt','r')
a = f.read()
f.close()
a_new = open('a_new.txt','w')
a_new.write('\n'.join(re.findall('(^.*ACC.*$)',a,re.M)))
a_new.close()
f = open('b.txt','r')
b = f.read()
f.close()
with open('b_new.txt','w') as b_new,open('a_new.txt','r') as a_new:
inds = [x.replace(' ','') for x in re.findall('^\s*(\d\s*\d\s*\d)',a_new.read(),re.M)]
for ind in inds:
reg = '(#indexes:\s*{0}\s*{1}\s*{2}[\s\S]*?(?=#indexes|$))'.format(*list(ind))
matches = re.findall(reg,b)
b_new.write('\n'.join(matches))
运行后,a_new.txt
将如下所示:
0 0 0 L M L 41 ACC sh 1.008732
2 1 1 L M L 18 ACC sh 1.025172
3 2 2 L M L 17 ACC sh 1.017734
和b_new.txt
:
#indexes: 0 0 0
1 -0.375E+04 0.382E+01
2 -0.375E+04 0.432E+01
3 -0.376E+04 0.353E+01
#indexes: 2 1 1
1 -0.735E+04 0.093E+01
#indexes: 3 2 2
1 -0.835E+04 0.331E+01
2 -0.035E+04 0.438E+01
我投票结束这个问题,因为这既不是一个代码编写,也不是教程服务,你的代码在哪里?你试过什么?你一直免费工作吗?我有一些工作要做…@RickyA,我是一名学生,我通过编码问题来学习,所以,几分钟(我不认为写5行代码是浪费时间)没什么大不了的,是的,如果你的工作感兴趣并帮助我学习一些东西,我将非常乐意提供帮助:)