Board logo

标题: [文本处理] 文本内容重新排序问题求助 [打印本页]

作者: cgwang1023    时间: 2020-11-2 10:41     标题: 文本内容重新排序问题求助

各位大侠,大家好,我现在有个文本如图片左侧格式,需要排序成右侧格式这样,原来有个代码,数据格式有点不一样,现在需要重新处理下代码,希望大神帮忙看看
作者: a20150604    时间: 2020-11-2 21:31

回复 1# cgwang1023

用 VBA/VBS 性能更好
作者: yhcfsr    时间: 2020-11-3 17:08

本帖最后由 yhcfsr 于 2020-11-4 10:13 编辑
  1. #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
  2. #=================================
  3. $src_file = '.\33.csv'
  4. $out_file = '.\结果.csv'
  5. #=================================
  6. $data = Import-Csv -LiteralPath $src_file -Header 'A','B';
  7. [System.Collections.ArrayList] $posArr= @();
  8. [System.Collections.ArrayList] $nagArr= @();
  9. [System.Collections.ArrayList] $retArr= @();
  10. [System.Collections.ArrayList] $nag   = @();
  11. [System.Collections.ArrayList] $pos   = @();
  12. $begin = $null;
  13. $count = $data.Count;
  14. for($i = 0; $i -le $count; ++$i){
  15.     if($i -lt $count){
  16.         $line = $data[$i];
  17.         $A = $line.A;
  18.     }
  19.     if($A -match 'begin' -or $i -eq $count){
  20.         if( ($nagArr.Count -eq 0) -and ($posArr.Count -eq 0) ){$begin = $line.B;continue;}
  21.         [void]$nag.Add($begin)
  22.         $nagArr|Sort-Object -Property @{Expression="A";Descending=$false}|%{[void]$nag.Add($_.A);[void]$nag.Add($_.B)}
  23.         [void]$retArr.Add($nag -join ',');
  24.         [void]$pos.Add($null)
  25.         $posArr|Sort-Object -Property @{Expression="A";Descending=$false}|%{[void]$pos.Add($_.A);[void]$pos.Add($_.B)}
  26.         [void]$retArr.Add($pos -join ',');
  27.         $posArr.Clear();$pos.Clear();
  28.         $nagArr.Clear();$nag.Clear();
  29.         $begin = $line.B;
  30.     }
  31.     elseif($A -match '-\d+'){[double]$line.A = [math]::Abs($line.A);[void]$nagArr.Add($line)}
  32.     elseif($A -ne 0){[double]$line.A = [math]::Abs($line.A);[void]$posArr.Add($line)}
  33. }
  34. $retArr|Set-Content -Path $out_file
复制代码
用法:excel转csv,设置源文件与结果路径,保存为BAT运行。
系统:WIN10





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2