【问题标题】:Keep numeric characters Copy non numeric characters to adjacent column CSV using PowerShell保留数字字符使用 PowerShell 将非数字字符复制到相邻列 CSV
【发布时间】:2019-06-17 16:54:42
【问题描述】:

我是 PowerShell 的新手,我一直在做一些小项目来学习如何使用它。 目前我有一个包含 .csv 文件的文件夹,如下所示:

"1","2","3","4","5","6","7","8","9","10","11"  
"Calss Section:","Section1",,,,,,,,,  
"Date","01/00/00",,,,,,,,,  
"ID Number:","1234567",,,,,,,,,  
"Name:","John D",,,,,,,,,  
"RunID","type","checktype","locname","type","instrument","limit1","limit2","read data","vIR","result"
"Values",,,,,,,,,,
"1","measurement1","PCB 1_1","A1 to B1","Res","<>","0.00","5.00m","4.25m","ohm","P"

我需要对文件进行一些操作,而不是一个一个地进行,我想编写一个脚本来帮助我浏览每个文件并根据需要进行修改。

我的目标是从“读取数据”列中拆分非数字值,因此在我的示例中,将从“4.25m”...变为“4.25”、“m”、“ohm”、“P " 我真的只想对那个特定的专栏做这件事

我认为帖子中的脚本 PowerShell - Replace a character in a specific column in a csv file 是我的出发点

任何帮助将不胜感激

【问题讨论】:

  • 你怎么知道要处理哪一行?那个……灾难……一个非 CSV 文件被破坏了,以至于我想不出任何程序化的方法来找到有问题的属性——只能通过计数。 [叹息...]
  • 这是一个带有实验记录的伪csv。一行中 11 列中每一列的含义将由其第一个字段值或之前的行来确定。例如,如果一行等于 ["Values",,,,,,,,,,],则上一行是标题,下一行是 CSV 值。
  • 即在本例中 RunID = 1;类型=测量1; checktype = PCB 1_1 等

标签: powershell csv scripting


【解决方案1】:

下面是我的解决方法


    $xl=New-Object -ComObject Excel.Application  
    $xl.Visible = $True  
    $wb=$xl.workbooks.open("C:\Name2.csv")  
    $ws = $wb.Worksheets(1)  
    $range = $xl.Range("I1:J1").EntireColumn  
    $range.Insert(-4161)  
    $ws.Cells(28,9) = '=IF(ISNUMBER(RIGHT(H28,1)/1),H28,LEFT(H28,LEN(H28)-1))'  
    $ws.Cells(28,10) = '=IF(ISNUMBER(FIND("m",H28)),"m",IF(ISNUMBER(FIND("M",H28)),"M",IF(ISNUMBER(FIND("k",H28)),"k",IF(ISNUMBER(FIND("n",H28)),"n",IF(ISNUMBER(FIND("u",H28)),"u","N/A")))))'  

$xl.ActiveSheet.Range("I28:I800").FillDown()

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多