【发布时间】:2016-04-10 10:25:45
【问题描述】:
我有一个包含下表的 CSV 文件
Name X Y Z
Al 50 1900 15
Steel 30 5700 15
基本上,以“名称”开头的行是标题行。我想首先在 powershell 中读取这个 CSV 并创建一个哈希表。之后,我需要从哈希表中读取数据并进行简单的计算。例如,如果我使用$Hashtable.Al,那么我可以得到X,Y,Z 的值。下面的等式可以是$Q = $X+$Y+$Z,这样我就可以得到$Q的答案。 ($Hashtable.Steel应该以同样的方式工作。)
#Read CSV and Create the hashtable
#Read data -X Y Z from hashtable by using
$Al = $Hashtable.Al
#Do a simple calculation
$Q = $Al.X + $Al.Y + $Al.Z
$Q
【问题讨论】:
-
所以
$Hashtable.Al应该为CSV 中的对应行返回一个包含X、Y和Z值的数组? -
我们不会为您编写代码。如果您不确定如何操作,请查看它。您已经有了与 cmets 一起描述的计划。搜索它们中的每一个,你就会得到你需要的东西。如果您遇到特定问题,请在此处提问,我们将尽力提供帮助。提示:
Import-CSV。此外,如果您要对每个对象(行:Al、Steel 等)进行相同的计算,我会使用数组而不是哈希表。 -
@MathiasR.Jessen 是的,你是对的。我刚刚更新了我的描述。我想用 X,Y,Z 的值来做计算。
-
@FrodeF。我现在可以读取 CSV 文件,但只能读取两个标题,
Name和X。$t = Import-Csv -Path 'C:\Users\Shuai\Desktop\CSV\Database.csv' -Header "Name", "x", "Y", "Z" $Hashtable = @{ } Foreach ($r in $t) { Write-Host $r.Name $r.X $r.Y $r.Z $Hashtable.Add($r.Name, $r.X, $r.Y, $r.Z) } -
您需要将对象(import-csv 为每一行创建的)添加到哈希表,而不是单个值。您可以稍后使用您存储的对象中的属性访问它们。
标签: csv powershell