首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV列表创建数组

从CSV列表创建数组
EN

Stack Overflow用户
提问于 2016-09-26 18:26:10
回答 2查看 2.1K关注 0票数 1

我在orders.csv中有一个这样的列表:

代码语言:javascript
复制
Order
1025405008
1054003899
1055003868
1079004365

我希望将单元号(第2-4个字符)和整个订单号添加到一个数组中,因此它将如下所示:

代码语言:javascript
复制
"0254","1025405008"
"0540","1054003899"
etc
etc

我希望忽略前缀"1“。到目前为止,用我有限的PS知识,我已经创建了变量:

代码语言:javascript
复制
$Orders = Import-csv c:\Orderlist.csv 
$Units = $Orders | Select @{LABEL="Unit";EXPRESSION={$_.Order.Substring(1,4)}}

所以我希望把这两个组合成一个数组。我试过了

代码语言:javascript
复制
$array = $Units,Orders

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2016-09-26 18:53:58

对于只有这一列的大型CSV文件,使用regexp要比使用Select快得多

代码语言:javascript
复制
$combined = [IO.File]::ReadAllText('c:\Orderlist.csv') `
    -replace '(?m)^\d(\d{4})\d+', '"$1","$&"' `
    -replace '^Order', 'Unit, Order' | ConvertFrom-Csv

在2MB文件中处理100k条记录的速度提高约6倍(700ms vs 4100ms)

票数 4
EN

Stack Overflow用户

发布于 2016-09-26 18:30:03

您只需在Select语句中选择顺序并使用ConvertTo-Csv cmdlet即可获得所需的输出:

代码语言:javascript
复制
$Orders = Import-csv c:\Orderlist.csv
$unitOrderArray = $Orders | Select @{LABEL="Unit";EXPRESSION={$_.Order.Substring(1,4)}}, Order
$unitOrderArray | ConvertTo-Csv -NoTypeInformation

输出:

代码语言:javascript
复制
"Unit","Order"
"0254","1025405008"
"0540","1054003899"
"0550","1055003868"
"0790","1079004365"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39700377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档