带有空标题的 Powershell import-csv
我正在使用 PowerShell 导入带有标题的制表符分隔文件。生成的文件在标题的第一行末尾有一些空字符串“”。 PowerShell 失败并出现错误:
“无法处理参数,因为 参数“名称”的值无效。 更改“名称”的值 参数并再次运行该操作”
因为标头需要一个名称。
我想知道是否有人对如何操作文件以删除双引号或用 "1" "2" "3" 枚举它们有任何想法。 ..“10”等。
理想情况下,我不想修改我的原始文件。我在想这样的事情,
$fileContents = Get-Content -Path = $tsvFileName
$firstLine = $fileContents[0].ToString().Replace('`t""',"")
$fileContents[0] = $firstLine
Import-Csv $fileContents -Delimiter "`t"
但是 Import-Csv 期望 $fileContents 是一个路径。我可以让它使用 Content 作为源吗?
I'm using PowerShell To import a TAB separated file with headers. The generated file has a few empty strings "" on the end of first line of headers. PowerShell fails with an error:
"Cannot process argument because the
value of argument "name" is invalid.
Change the value of the "name"
argument and run the operation again"
because the header's require a name.
I'm wondering if anyone has any ideas on how to manipulate the file to either remove the double quotes or enumerate them with a "1" "2" "3" ... "10" etc.
Ideally I would like to not modify my original file. I was thinking something like this
$fileContents = Get-Content -Path = $tsvFileName
$firstLine = $fileContents[0].ToString().Replace('`t""',"")
$fileContents[0] = $firstLine
Import-Csv $fileContents -Delimiter "`t"
But Import-Csv is expecting $fileContents to be a path. Can I get it to use Content as a source?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以提供自己的标头并忽略 csv 的第一行,也可以像 Keith 所说的那样在末尾使用 Convertfrom-csv 。
现在,文件中的无效标头只是您可以跳过的一行。
-奥辛
You can either provide your own headers and ignore the first line of the csv, or you can use convertfrom-csv on the end like Keith says.
Now the invalid headers in the file is just a row that you can skip.
-Oisin
如果您想使用字符串,请使用 ConvertFrom-Csv 例如:
If you want to work with strings instead use ConvertFrom-Csv e.g.:
我最终需要处理这个问题的多个实例。我没有使用 -Header 并手动设置每个导入实例,而是编写了一个更通用的方法来应用于所有实例。我剔除第一行的所有“t”实例,并将文件保存为 $filename + _bak 打开并导入该文件。
I ended up needing to handle multiple instances of this issue. Rather than use the -Header and manually setting up each import instance I wrote a more generic method to apply to all of them. I cull out all of the `t"" instances of the first line and save the file to open as a $filename + _bak and import that one.
如果您有很多列,我的解决方案:
My Solution if you have much columns :