大神们好,本小白最近在处理某些科研相关的数据的时候遇到些问题,用Python可以解决但是感觉做法很麻烦,请教下有没有更简单的方法?
需要处理的文件是这种结构:
16000
timestep:1000
1 1 num1 num2 num3
2 1 num4 num5 num6
3 1 num7 num8 num9
4 2 num10 num11 num12
……
其结构为:第一、二行是两个标识,不用管。
第3-16002行是16000行数据,(其实不止16002行但是只需要前16000行数据)
每行5个,分别是序号, 随机的1or2, 3个浮点数。
现在需要将其中那个 随机的1or2 替换掉,如果原本是1,替换为Fe;如果原本是2,替换为Cr。其他内容不变。
于是用了很麻烦的方法解决了问题:
#!/usr/bin/python
import os
file=open("c.out",'r+')
lines=file.readlines()
file2=open('d.out','w+')
file2.write("16000\n")
file2.write("timestep:1000\n")
for line in lines[2:16003]:
f=line.split(' ')
if f[1]=="1":
f[1]='Fe'
elif f[1]=="2":
f[2]='Cr'
else:
pass
str=' '.join(f)
file2.write(str)
file2.close()
os.rename('d.out','c.out')
大致思路是:读取待修改文件c.out的每一行,拆成列表,用列表的第二个元素f[1]做判断并赋值,将列表重新组合成字符串,写进文件d.out中,最后将d.out重命名(替换)为c.out。
感觉这个方法太麻烦了!有没有什么更简单的方法可以解决这个问题呢?不要跟我说用sed。