我試圖通過查看CSV文件1中是否包含CSV文件2列的值來附加列。匹配哈希表中的值,同時忽略兩個CSV文件之間的大小寫敏感
我有一個CSV文件1(test1.csv
):
csv1ColumnOne,csv1ColumnTwo
1,dF3aWv
2,
3,ka21p
4,NAE31
5,dsafl
6,nv02k
7,qng02
8,xcw3r
9,dF3aW
我有一個CSV文件2(test2.csv
):
csv2ColumnOne,csv2ColumnTwo
bbetfe,DF3AW
asdf,dsafl
qwer,
zxcv,NAE31
poiu,nbrwp1
考慮下面的代碼...
$hashTable = @()
Import-Csv C:\path\test1.csv | ForEach-Object {
$hashTable[$_.csv1ColumnOne] = $_.csv1ColumnTwo
}
(Import-Csv C:\path\test2.csv) |
Select-Object -Property *, @{n='csv1ColumnThree';e={
if ($hashTable.ContainsKey($_.csv2ColumnTwo)) {
$_.csv2ColumnTwo
} elseif (-not ($_.csv2ColumnTwo)) {
'No value found from csv file2'
} else {
'No value found from csv file1'
}
}} | Export-Csv "C:\path\testresults.csv" -NoType
結果如下所示:
csv2ColumnOne,csv2ColumnTwo,csv1ColumnThree
bbetfe,DF3AW,"No value found from csv file1"
asdf,dsafl,dsafl
qwer,,No value found from csv file2
zxcv,NAE31,NAE31
poiu,nbrwp1,"No value found from csv file1"
當相反,它應該是這樣的:
csv2ColumnOne,csv2ColumnTwo,csv1ColumnThree
bbetfe,DF3AW,dF3aW
asdf,dsafl,dsafl
qwer,,"No value found from csv file2"
zxcv,NAE31,NAE31
poiu,nbrwp1,"No value found from csv file1"
我之所以看到bbetfe,DF3AW,"No value found from csv file1"
ins't bbetfe,DF3AW,dF3aW
是因爲價值的區分大小寫的。無論如何忽略字母數字值的大小寫敏感?
請注意,我不能使用'-like',因爲它會爲列'csv1ColumnThree'填充值'dF3aWv'而不是'dF3aW' ... Python有if(string.upper())之類的東西。如果PowerShell有這樣的事情會很好... –