[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]如何获取指定位置的数值进行相应计算并将结果替换掉原数值?

本帖最后由 pcl_test 于 2016-3-12 14:11 编辑

我有很多行这样的文本,不知道怎样替换,请高手指点一下

  exp=  172

exp=  369
.........
exp=  96999999
......
我想把此行替换为

exp=  数字÷4 并算出结果

如 exp=  43
    exp=  92.25
.........
以此类推
能用批处理或者什么脚本实现吗
1

评分人数

本帖最后由 ivor 于 2016-3-12 00:08 编辑

源文件:a.txt     生成新文件:new.txt
  1. with open('new.txt', 'w') as write_file:
  2.     [print('%s=%s' % (i.strip().split('=')[0],int(i.strip().split('=')[1])/4), file=write_file) for i in open('a.txt','r')]
复制代码
回复 1# hfstar


能看懂吗,哈哈,缩成两行了
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 2# ivor


    with语句不用加close。自动管理。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

哦,看错了。是上一个文件句柄的。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 4# codegay


    看我更新了的代码,给加分不,和你有得一拼吧
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 2# ivor


    哈哈,我是老鸟。绝对无压力。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 codegay 于 2016-3-12 00:20 编辑
  1. """
  2. python文本数据提取计算.py
  3. http://bbs.bathome.net/thread-39649-1-1.html
  4. codegay 2016年3月11日 23:27:16
  5. """
  6. import random
  7. import re
  8. #生成测试数据
  9. with open("a.txt","w+") as f:
  10.     [f.write("exp= "+str(random.randint(1,9999))+"\n") for r in range(1,33)]
  11. #读取数据,懒得写正则了,假设数据格式严格:exp= 数值
  12. with open("a.txt") as f:
  13.     txt=[r.split("=")[1].strip() for r in f.readlines()]
  14. results=["exp= "+str(float(r)/4)+"\n" for r in txt]
  15. with open("b.txt","w+") as f:
  16.     f.writelines(results)
  17.     #2016年3月12日 00:11:08
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

请问各位大神,你们发的代码是放在dos里还是批处理里运行的
  1. with open('new.txt', 'w') as write_file:
  2.     [print('%s=%s' % (i.strip().split('=')[0],int(i.strip().split('=')[1])/4), file=write_file) for i in open('a.txt','r')]
复制代码
这个代码用什么方式运行

TOP

回复 1# hfstar


    真是抱歉,很久没有上这个论坛了,我以为没有同样问题的帖子所以,久直接发帖向大家求教了.没有想到违规了

TOP

还是没有解决,这样,我把这个文本上传,请大神们帮我一下.把里面的带 Exp = 数字 的行都处理成 Exp = 数字÷4 的运算结果,请各位帮小弟一下

TOP

本帖最后由 happy886rr 于 2016-3-12 19:29 编辑

回复 10# hfstar
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1* delims=:" %%a in ('findstr  /n .* a.txt') do (
  4. set L=%%b
  5. set L=!L: =!
  6. if /i "!L:~0,4!"=="exp=" (
  7. set /a "L=!L:~4!>>2"
  8. echo Exp = !L!
  9. ) else (echo;%%b)
  10. ))>你要的.txt
复制代码

TOP

回复 11# happy886rr


    多谢了,能把214.50后面的小数点包括小数点后面的.50去掉吗,只要整数

TOP

回复 11# happy886rr

已经完美解决了,谢谢大神,大神一定是批处理高手

TOP

本帖最后由 codegay 于 2016-3-12 13:51 编辑
  1. """
  2. python文本数据提取计算.py
  3. http://bbs.bathome.net/thread-39649-1-1.html
  4. codegay 2016年3月12日 12:19:56
  5. """
  6. import random
  7. import re
  8. import shutil
  9. #测试数据
  10. shutil.copy("test.txt","a.txt")
  11. outf=open("b.txt","w+",encoding="utf-8")
  12. t=lambda x,y:y.write(x) if "Exp = " not in x else y.write(x.split("=")[0]+" = "+str(int(x.split("=")[1].strip())//4)+"\n")
  13. #读取数据,懒得写正则了,假设数据格式严格:exp= 数值
  14. with open("a.txt",encoding="utf-8") as f:
  15.     txt=[t(r,outf) for r in f.readlines()]
  16. outf.close()
  17. #设置a为源文件,处理过的数据临时写入b,程序结束后,复制b覆盖a
  18. shutil.copy("b.txt","a.txt")
  19. #2016年3月12日 12:50:13
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 14# codegay


    谢谢各位大神们,各位大神辛苦了

TOP

返回列表