从字符串而不是从文件中导入-Csv?

Posted

技术标签:

【中文标题】从字符串而不是从文件中导入-Csv?【英文标题】:Import-Csv from string instead from a file? 【发布时间】:2013-07-03 08:28:57 【问题描述】:

有没有办法在 powershell 中从包含字符串的变量创建一个 csv 对象? 目前我需要在临时文件中写入内容,然后将其导入到 csv 中,我想减少磁盘操作:

$some_string | Set-Content $temp_file
$csv_content=Import-Csv $temp_file

编辑

@Graham Gold,谢谢你的回答(我已经为你们俩设置了 +1),但乔伊的回答似乎是正确的。这是我的测试:

    $csv_string="
`"col1`" ; `"col2`"
val11 ; val12
val21 ; val22"

$csv_content1 = $csv_string | ConvertFrom-CSV 
$csv_content2 = $csv_string | ConvertTo-CSV 
"
ConvertFrom result:"
$csv_content1
"
ConvertTo result:"
$csv_content2

结果:

ConvertFrom result:

H1                                                                             
--                                                                             
col1 ; "col2"                                                                  
val11 ; val12                                                                  
val21 ; val22                                                                  

ConvertTo result:
#TYPE System.String
"Length"
"47"

【问题讨论】:

【参考方案1】:

您可以改用ConvertFrom-Csv

$csv_content = $some_string | ConvertFrom-Csv -Delim ';'

Import-Csv 只不过是Get-ContentConvertFrom-Csv 的包装。

【讨论】:

【参考方案2】:

更好:

$csv_content1 = ConvertFrom-CSV -delim ';' -Input @"
"col1"; "col2"
val11 ; val12
val21 ; val22
"@

【讨论】:

这个问题已经被回答和接受了。你能解释一下为什么你的答案比被接受的更好吗? 实际上,在再次阅读问题时,我应该提供一个稍微不同的解决方案: $csv_content1 = ConvertFrom-CSV -delim ';' -Input $some_string 好处是不需要把字符串放到管道上。然而,对于开发人员想要嵌入程序本身的文本时给出的示例文本,使用带有@here 字符串的示例更好,因为它不需要首先将文本保存到字符串变量中,然后再次不必要地创建管道. 能否请您编辑您的答案并添加此说明,以便将来发现此问题的人理解为什么您的答案可能会更好?特别是在回答老问题时,通常最好提供尽可能多的细节。如果我们通过提供足够的信息让人们了解我们的答案是如何运作的,该网站会更好地运行。谢谢。

以上是关于从字符串而不是从文件中导入-Csv?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中导入; (read.csv) 自动忽略非数字列

从文件夹中导入 Python 3 中的 .csv 文件

如何使用 read_csv 从文件中导入某些行

什么是从同一个文件中导入多个组件的正确方法,而不是导入每个组件

如何在 python 中导入 CSV 文件?

如何使用谷歌应用脚​​本在 BigQuery 中导入 csv 日期格式