Powershell .txt到CSV格式不规范

时间:2018-05-14 01:34:13

标签: powershell csv export-to-csv

我从pdf中提取了大量.txt个文件,并使用逗号分隔符进行格式化。

我正在尝试将这些文本文件相互追加,并在每个文本文件之间添加一条新行。在格式化过程的早期,我采用了多行输入并将其格式化为一行,条目以逗号分隔。

然而,当在csv中将一个txt文件附加到另一个txt文件时,返回前一个带有多个换行符的格式。所以我的最终输出有效csv,但不代表每个文本文件是一行csv条目。如何确保从txt到csv的转换保留txt文件的格式?

我使用了Export-CSVAdd-Content>>运算符,结果相似。

总结一下,具有以下格式的单个.txt文件:

,927,Dance like Misty"," shine like Lupita"," slay like Serena. speak like Viola"," fight like Rosa! ,United States ,16 - 65+

csv文件中附加在一起时,请转到以下内容:

,927
,Dance like Misty"," shine like Lupita"," slay like Serena. speak like Viola"," fight like Rosa!
,United States
,16 - 65+

如何准备数据:

删除新行

Foreach($f in $FILES){(Get-Content $f -Raw).Replace("`n","") | Set-Content $f -Force}

在每个txt文件的末尾添加一个新行

 foreach($f in $FILES){Add-Content -Path $f -value "`n" |Set-Content $f -Force}

尝试转换为CSV,每行一个文本文件,逗号分隔符:

cat $FILES | sc csv.csv

或者

 foreach($f in $FILES){import-csv $f -delimiter "," | export-csv $f}

或者

foreach($f in $FILES){ Export-Csv -InputObject $f -append -path "test.csv"}

在新行上以逗号分隔值返回csv,而不是将每个txt文件作为一行。

1 个答案:

答案 0 :(得分:1)

通过意识到即使记事本没有显示换行符,也解决了这个问题,但仍然存在隐藏的回车符。将明显的一行csv文件加载到Notepad ++中并切换"显示隐藏的字符"这种疏忽显而易见。

通过在转换为CSV之前替换\ r和\ n字符,

Foreach($f in $FILES){(Get-Content $f -Raw).Replace("\n","").Replace("\r","" | 
Set-Content $f -Force}

CSV转换过程按计划使用以下

工作
cat $FILES | sc final.csv

最终裁决 - 文本文件似乎是准备成为CSV的单行条目

,927,Dance like Misty"," shine like Lupita"," slay like Serena. speak like Viola"," fight like Rosa! ,United States ,16 - 65+

每个值之间仍然有回车符。通过尝试使用功能"显示隐藏字符的另一个文本编辑器,可以看出这一点。"