标题: [文本处理] 文本内容重新排序问题求助 [打印本页]
作者: 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 编辑
- #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
-
- #=================================
- $src_file = '.\33.csv'
- $out_file = '.\结果.csv'
- #=================================
-
- $data = Import-Csv -LiteralPath $src_file -Header 'A','B';
- [System.Collections.ArrayList] $posArr= @();
- [System.Collections.ArrayList] $nagArr= @();
- [System.Collections.ArrayList] $retArr= @();
- [System.Collections.ArrayList] $nag = @();
- [System.Collections.ArrayList] $pos = @();
- $begin = $null;
- $count = $data.Count;
- for($i = 0; $i -le $count; ++$i){
- if($i -lt $count){
- $line = $data[$i];
- $A = $line.A;
- }
- if($A -match 'begin' -or $i -eq $count){
- if( ($nagArr.Count -eq 0) -and ($posArr.Count -eq 0) ){$begin = $line.B;continue;}
-
- [void]$nag.Add($begin)
- $nagArr|Sort-Object -Property @{Expression="A";Descending=$false}|%{[void]$nag.Add($_.A);[void]$nag.Add($_.B)}
- [void]$retArr.Add($nag -join ',');
-
- [void]$pos.Add($null)
- $posArr|Sort-Object -Property @{Expression="A";Descending=$false}|%{[void]$pos.Add($_.A);[void]$pos.Add($_.B)}
- [void]$retArr.Add($pos -join ',');
-
- $posArr.Clear();$pos.Clear();
- $nagArr.Clear();$nag.Clear();
- $begin = $line.B;
- }
- elseif($A -match '-\d+'){[double]$line.A = [math]::Abs($line.A);[void]$nagArr.Add($line)}
- elseif($A -ne 0){[double]$line.A = [math]::Abs($line.A);[void]$posArr.Add($line)}
- }
- $retArr|Set-Content -Path $out_file
复制代码
用法:excel转csv,设置源文件与结果路径,保存为BAT运行。
系统:WIN10
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |