fooljava 2017-08-17 17:25 采纳率: 0%
浏览 4400

用Python替换文件中的字符,寻找更简单的方法

大神们好,本小白最近在处理某些科研相关的数据的时候遇到些问题,用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。

  • 写回答

5条回答

  • Tsui丶 2017-08-18 00:38
    关注

    如果你的数据是存在数据库里面的,那么很简单直接数据库里面修改就好了,如果是文件的话(如果不是非要用程序来解决),那么直接打开文件ctrl+f 搜索 空格 1 空格
    然后全部替换,之后再替换2就是了。如果非要用程序的话也是不难(程序员,无所畏惧)

     lines = open('test1.txt').readlines()  #打开文件,读入每一行
    fp = open(''test2.txt','w')  #打开你要写得文件test2.txt
    for s in lines:
    # replace是替换,write是写入
    fp.write( s.replace(' 1 ',' Fe ').replace(' 2 ',' Cr '))    
    

    因为随机数和前后都有空格间隔出来,这样的话直接替换所有的 1 , 2 ,是不会出现修改错误的情况的

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题