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