gpt4 book ai didi

powershell - 文件包含多行数据且没有标题时,如何计算CSV列数

转载 作者:行者123 更新时间:2023-12-02 23:25:31 26 4
gpt4 key购买 nike

我的CSV文件没有标题和多行条目,如下所示:

11;"multi line
col12";13;foobar;foobar
21;22;23;24;25

我想计算列数。因此,在此示例中为5。我怎么做?

我尝试了什么:

没有标题参数, Import-CSV无法工作,因为第一行中的条目重复。
(Import-Csv .\bad.csv -Delimiter ";" | get-member -type NoteProperty).count

添加 header 参数会使计数偏斜。
(Import-Csv .\bad.csv -Delimiter ";" -Header (1..99) | get-member -type NoteProperty).count

由于必须手动处理所有解析,因此我不得不中止通过Get-Content手动读取文件。转义字符和多行条目...

我的PowerShell版本是3,以后必须将脚本移植到版本2。

最佳答案

由于Excel知道,所以我们问他:

$path = "path\to\bad.csv"
$excel = New-Object -ComObject Excel.Application

$workbook = $excel.Workbooks.Open($path)
$sheet = $workbook.ActiveSheet

$columnIndex = 1
while($sheet.Cells.Item(1, $columnIndex).Text -ne "") {
$columnIndex++
}

"There are $($columnIndex - 1) columns in CSV file $path"

Start-Sleep -Seconds 1
Get-Process excel | Stop-Process -Force

正如 Ansgar Wiechers 在评论中指出的那样,有一个更短的解决方案:
$path = "path\to\bad.csv"
$excel = New-Object -ComObject Excel.Application

$workbook = $excel.Workbooks.Open($path)
$sheet = $workbook.ActiveSheet

$columnCount = $sheet.UsedRange.Columns.Count
"There are $columnCount columns in CSV file $path"

Start-Sleep -Seconds 1
Get-Process excel | Stop-Process -Force

(我知道我杀死Excel的方法很脏,但是iirc这样做需要太多代码)

关于powershell - 文件包含多行数据且没有标题时,如何计算CSV列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37990381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com