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

[文本处理] 批处理如何对文本里各列数据分别除以指定数值

[复制链接]
 楼主| 发表于 2016-9-29 23:16:49 | 显示全部楼层
回复 26# pcl_test

多谢大神,数据已经上传了,前面是有空格的,但21楼和26楼代码完美解决,26楼的更简洁。
还想好奇的问问,如果每列除的数相同,是不是还可以简单些?
 楼主| 发表于 2016-9-29 23:19:09 | 显示全部楼层
回复 28# WHY

谢谢!您的代码似乎也对文件数据做了修改,但看不懂,如果想更改除数,不知道怎么做。
发表于 2016-9-29 23:38:17 | 显示全部楼层
本帖最后由 pcl_test 于 2016-9-29 23:39 编辑

回复 31# meiszp
26楼
  1. powershell -c "dir *.txt|?{$_ -is [IO.FileInfo]}|%%{gc $_|%%{if($_ -match '^\s*$'){$_}else{$a=($_.trim() -split '\s+');$line='';for($i=0;$i -le ($a.length-1);$i++){$line+='  '+('{0:e8}' -f ($a[$i]/指定的共同除数))};$line.trim()}}|out-file ('New_'+$_.name) -encoding ascii}"
  2. pause
复制代码
28楼($b.Value/++$i)改为($b.Value/指定的共同除数)
发表于 2016-9-30 09:01:10 | 显示全部楼层
python 的pandas 处理起来真的是完全不费力啊。

pandas 是一个python用来进行数据处理和计算的库,提供了很多非常简单友好易用的数据处理相关的接口.

处理单个文件的代码示例:
  1. #2016年9月30日 08:39:27 codegay

  2. from pandas import *

  3. csv = read_csv("F31_03.txt",sep='\s+',header=None)
  4. s = Series([10,20,30,40,50,60,70])

  5. newcsv = csv / s #csv 中的数据每列除以 s中对应的数值

  6. print(newcsv)
复制代码
发表于 2016-10-10 22:17:30 | 显示全部楼层
发现win8.1(PowerShell 4.0)与 win7(PowerShell 2.0)在脚本块中定义变量有区别
脚本块中的变量作用域原本应该是Local性质的,但win7把它当作Global传递,混乱了。

以下代码win7、win8.1测试通过(第1列/10;第2列/20;第3列/30;......):
  1. @echo off
  2. set "r='\d+\.?\d*[Ee][-+]\d{3}'"
  3. set "s=[IO.File]::ReadAllText($_,[Text.Encoding]::Default)"
  4. md new\ 2>nul
  5. PowerShell -c "dir *.txt|%%{[regex]::Replace(%s%,"[^^`r`n]+",{param($a,$global:i=0);[regex]::Replace($a.Value,%r%,{param($b);($b.Value/++$global:i/10).ToString('e8')})})>('new\'+$_.Name)}"
  6. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:29 , Processed in 0.019091 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表