将Import-CSV结果从字符串转换为任意数据类型

鲍勃·莫蒂默(Bob Mortimer)

假设我从PowerShell中读取了一个CSV文件:

$data = Import-Csv "myfilename.csv"

CSV文件(通常)可以包含字符串和数字,但是PowerShell将它们作为字符串存储在内存中:

PS D:\> $ data [0] .Col3.GetType()

IsPublic IsSerial名称BaseType 
-------- -------- ---- --------
是是是字符串System.Object

导入后,能够从字符串转换类型将很有用。如果只有一两列,则可以使用以下计算的属性将它们转换:

$data = Import-Csv "myfilename.csv" |
        select -Property @{n='Col2';e={[int]$_.Col2}},
            @{n='Col3';e={[double]$_.Col3}}

但是,假设我事先不知道列名和预期的类型。相反,我有一个任意的“模式”告诉我哪些列应该是哪种类型,例如:

$Schema = @{Col1=[string];Col2=[int];Col3=[double]}

如何将Import-CSV的输出转换为架构确定的类型?(最好以有效/优雅的方式)

样本CSV文件

“ Col1”,“ Col2”,“ Col3” 
“ a”,2,4.3 
“ b”,5,7.9
马丁·布兰德尔

您可以通过-as强制转换来做到这一点

$data = Import-Csv "myfilename.csv" |
        select -Property @{n='Col2';e={$_.Col2 -as $Schema.Col2}},
            @{n='Col3';e=$_.Col3 -as $Schema.Col3}}

对于任意数量的列,您可以将此答案中概述的方法扩展到一个类似的问题:

$data = Import-Csv "myfilename.csv" | Foreach-Object { 
          foreach ($property in $_.PSObject.Properties) {
            $property.Value = $property.Value -as $Schema[$property.Name]
          }
          $_   # return the modified object
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将元组字符串列表的数据类型转换为float

将Pandas数据框转换为CSV字符串

将任意字符串转换为可读的骰子掷骰结果的最佳方法是什么?[解决了]

将任何原始数据类型转换为字符串的最佳方法是什么

无法将数据(类型接口{})转换为字符串类型:需要类型断言

将代表任意基数的字符串转换为数字

如何将数据帧数据类型转换为字符串?

将(csv)字符串对象转换为数据框

将数据类型转换为字符串以显示而不显示“ show”

如何将Oracle RAW数据类型(另存为字符串)转换为Java String?

TensorFlow:如何将tf.Tensor字符串转换为python datetime数据类型?

将数据类型varchar转换为将int year转换为字符串的日期时出错

SQL查询结果将日期列报告为字符串,在将其转换为日期数据类型时遇到问题

将类型转换为字符串

将字符串转换为数据类型以存储在哈希表中

将数据类型转换为查询字符串

如何使用反射将IList动态转换为任意数据类型的数组

将Spark数据框中的MapType类型的列的数据转换为字符串

将字符串日期转换为日期数据类型

将混合数据类型的元组列表转换为所有字符串

将字符串转换为char和int数据类型

将字符串转换为数字数据类型并舍入浮点值的函数

查询从int数组转换的字符串,将导致Conversion数据类型smallint错误

如何将字符串转换为自定义数据类型

来自NODEJS的MongoDB插入将值的数据类型从int转换为字符串

MongoDB将字符串类型转换为浮点类型

如何将只有一年(可能是字符串)的单元格转换为 DateTime 数据类型?

R语言将时间数据类型转换为字符串

将 CSV 数据转换为字符串

TOP 榜单

热门标签

归档