当前位置: 首页 > 知识库问答 >
问题:

用于从CSV中删除空白列的Powershell脚本

徐星阑
2023-03-14

用于从CSV中删除空白列的Powershell脚本

我有一个电子表格,我正在将其导入MySQL数据库,由于电子表格中的空白列,导入失败。

是否有一个PowerShell脚本,我可以运行/创建,将检查任何给定的CSV文件并删除空白列?

Col1,Col2,Col3,Col4,,,Val1,Val2,Val3,Val4

共有2个答案

仲霍英
2023-03-14

当我运行Dave Sexton的代码时,我得到:

Select-Object : Cannot convert System.Management.Automation.PSObject to one of the following 
types {System.String, System.Management.Automation.ScriptBlock}.
At line:15 char:12
+ $x | Select <<<<  $f  | Export-Csv ColsRem.test.$time.csv -NoTypeInformation
+ CategoryInfo          : InvalidArgument: (:) [Select-Object], NotSupportedException
+ FullyQualifiedErrorId : 
                  DictionaryKeyUnknownType,Microsoft.PowerShell.Commands.SelectObjectCommand

我通过增加一行来纠正这个问题,强制每个数组元素都是字符串

$x = Import-Csv YourFile.csv
$f = $x[0] | Get-Member -MemberType NoteProperty | Select name
$f | Add-Member -Name count -Type NoteProperty -Value 0
$f | %{
  $n = $_.Name
  $_.Count = @($x | Select $n -ExpandProperty $n | ? {$_ -ne ''}).count
}
$f = @($f | ? {$_.count -gt 0} | Select Name -expandproperty Name)

# I could get the select to work with strings separated by commas, but the array would 
# always produce the error until I added the following line, explicitly changing the 
#values to strings.
$f = $f | Foreach-Object { "$_" } 

$x | Select $f | Export-Csv NewFile.csv -NoTypeInformation

我的导入CSV包含几百列,大约一半可能不会被填充,所以有必要去掉额外的列。现在,我只需要想一想,如何在不改变名称的情况下,将列意外地按名称重新排序为字母顺序。

马权
2023-03-14

像这样的怎么样:

$x = Import-Csv YourFile.csv
$f = $x[0] | Get-Member -MemberType NoteProperty | Select name
$f | Add-Member -Name count -Type NoteProperty -Value 0
$f | %{
  $n = $_.Name
  $_.Count = @($x | Select $n -ExpandProperty $n | ? {$_ -ne ''}).count
}
$f = @($f | ? {$_.count -gt 0} | Select Name -expandproperty Name)

$x | Select $f | Export-Csv NewFile.csv -NoTypeInformation

它使用Get Member获取列名,循环遍历每个列名以检查有多少列名不是空的,然后在select中使用结果。

 类似资料:
  • 我有一个CSV文件,它有重复的列标题,所以我不能使用导入CSV来完成这项工作。标题名称是动态的。我需要得到第三列、第四列以及之后的每四列(例如:从0列开始,第2列、第3列、第7列、第11列、第15列…)。 我有重复列名的原因是头3需要与头0相同的名称,以四个组为一组。0个 我使用“获取内容”,因为我不知道如何使用“导入Csv”实现此功能。我必须使用Import Csv来获取列数,而我无法用get

  • 问题内容: 我有一个很大的csv文件,其中某些行完全空白。如何使用Python从csv中删除所有空白行? 经过您的所有建议,这就是我到目前为止的内容 可以吗?或者有更好的方法吗? 问题答案: 使用模块: 如果还需要删除所有字段为空的行,请将行更改为: 而且,如果您还想将仅包含空格的字段视为空白,则可以将其替换为: 请注意,在Python 2.x和更早版本中,该模块需要二进制文件,因此您需要使用e标

  • 我遇到了损坏的CSV问题,它在图像链接中有空白。 CSV文件由我的客户业务合作伙伴自动创建,约22000行。CSV中大约有30个链接被破坏,我无法修复。因为它每3小时更新一次。 所以,我试图想出一个自动的解决方案,但似乎没有任何效果。 问题在于图像链接,如以下链接:https://images.tyroo.de/GISLAVED_ULTRA_SPEED2�.jpg 它以前有空间。一些文件有3个空格

  • 我需要在我用docx4j生成的文档中有条件地删除/添加分页符。如果页面内容适合整个页面,那么我添加的分页符会创建一个空白页。我使用下面的代码来删除分页符: } 但这也删除了有用的分页符。那么,有什么方法可以动态检查页面内容高度吗?或者其他解决方案?

  • 我一直试图创建一个宏来格式化从特定外部源复制的表,问题是,一些单元格似乎从右向左填充,剩余的空间向左填充空格:

  • 问题内容: 我需要在PHP中删除空白行(带空格或绝对空白)。我使用此正则表达式,但不起作用: 我想要一个结果: 将: 问题答案: 上面的正则表达式说: