首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV文件的字符串列中删除新行字符

问从CSV文件的字符串列中删除新行字符
EN

Stack Overflow用户
提问于 2013-09-04 17:11:17
回答 5查看 23.4K关注 0票数 6

我有一个带有字符串列的CSV文件,该列跨越多行。我想把这些多行合并成一行。

例如

代码语言:javascript
复制
1, "asdsdsdsds", "John"
2, "dfdhifdkinf
dfjdfgkdnjgknkdjgndkng
dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"

我希望我的输出是

代码语言:javascript
复制
1, "asdsdsdsds", "John"
2, "dfdhifdkinf dfjdfgkdnjgknkdjgndkng dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"

我想要使用PowerShell实现这个输出

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-04 17:55:10

试试这个:

代码语言:javascript
复制
$csv = 'C:\path\to\your.csv'

(Import-Csv $csv -Header 'ID','Value','Name') | % {
  $_.Value = $_.Value -replace "`r`n",' '
  $_
} | Export-Csv $csv -NoTypeInformation

如果您的CSV包含标头,请从导入中删除-Header 'ID','Value','Name'并用实际的列名替换Value。

如果您不想在字段中使用双引号,可以通过用如下所示替换Export-Csv来删除它们:

代码语言:javascript
复制
... | ConvertTo-Csv -NoTypeInformation | % { $_ -replace '"' } | Out-File $csv

要从输出中删除标头,在Out-File之前添加另一个筛选器以跳过第一行:

代码语言:javascript
复制
... | select -Skip 1 | Out-File $csv
票数 3
EN

Stack Overflow用户

发布于 2014-03-24 00:30:56

在Ansgar回答的基础上,下面是如何在以下情况下:

  • 你不知道列的名字
  • 您的CSV文件可以独立地包含CR或LF。 (导入-Csv $csvInput) { $line = $_ foreach ($prop in $line.PSObject.Properties) { $line.($prop.Name) = ($prop.Value -replace '\r\n',') } $line }Export $csvOutput -NoTypeInformation
票数 4
EN

Stack Overflow用户

发布于 2013-09-04 17:37:41

您可以导入csv,进行专门的选择,并将结果写入新的CSV。

代码语言:javascript
复制
import-csv Before.csv -Header "ID","Change" | Select ID,@{Name="NoNewLines", Expression={$_.Change -replace "`n"," "}} | export-csv After.csv

关键部分在select语句中,它允许您传递一个专用哈希表(Name是属性的名称,表达式是计算它的脚本块)。

您可能需要稍微修改标题才能得到所需的准确输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18619939

复制
相关文章

相似问题

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