我从pdf中提取了大量.txt
个文件,并使用逗号分隔符进行格式化。
我正在尝试将这些文本文件相互追加,并在每个文本文件之间添加一条新行。在格式化过程的早期,我采用了多行输入并将其格式化为一行,条目以逗号分隔。
然而,当在csv
中将一个txt文件附加到另一个txt文件时,返回前一个带有多个换行符的格式。所以我的最终输出有效csv
,但不代表每个文本文件是一行csv
条目。如何确保从txt到csv
的转换保留txt文件的格式?
我使用了Export-CSV
,Add-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文件作为一行。
答案 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+
每个值之间仍然有回车符。通过尝试使用功能"显示隐藏字符的另一个文本编辑器,可以看出这一点。"