对于一个项目我必须使用xml格式通过rest(curl)从csv文件获取数据到一个websystem。 我几乎所有的东西都可以工作但是还有一件事。
我收到的这个项目的文件是.xlsx文件。我将它导出到.csv文件(分隔符分隔符)并将编码转换为UTF-8。原始文件大约有2000行和30列。
我的策略是“剪切”.csv文件的字段并将输出保存到一个带有bash(4.3.42)脚本的数组(我之前没有使用过Python;))在SLES12 SP2上(它是试验机)。
csv采用以下格式(简化): (注意:在一个单元格中有三行的描述。这是破坏我的脚本的部分。)curl命令使用这些新行创建错误条目。
大约四分之一的数据有类似的描述。
导出到csv之后,如果我用vim打开它,这就是文件的样子:
title|description|firstname
Test|Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat
sed diam voluptua.|Chris
这是我的简化脚本:
file="Kontakte.csv"
# Get the values from the file
arrV[1]=$(cut -d'|' -f1 "$file" | cut -d$'\n' -f2) # Title
arrV[2]=$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2) # Description
arrV[3]=$(cut -d'|' -f3 "$file" | cut -d$'\n' -f2) # First name
echo "### Values ###"
# For reference
echo "Title: " ${arrV[1]}
echo "Description: " ${arrV[2]}
echo "Name: " ${arrV[3]}
我得到的是......
### Values ###
Title: Test
Description: Lorem ipsum dolor sit amet,
Name: Chris
......而不是那样的东西:
### Values ###
Title: Test
Description: Lorem ipsum dolor sit amet,\n onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat\n sed diam voluptua.
Name: Chris
我有一个vba脚本来摆脱新行,但这将是一个不太理想的解决方案。
在执行中添加一些引号以使其正常工作会很好,例如:
arrV[2]="$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2)"
但我不能解决这个问题。
您对这些新线路有什么想法吗?或者是在Excel中预先删除新行我唯一的选择?
提前谢谢。
答案 0 :(得分:0)
您正在使用面向行的工具,因此嵌入式'restful:new'
导致问题并不奇怪。选择像〜一样的字符,然后使用grep验证它不会出现在.csv中。使用\n
(Mac)行终止符导出到.csv。然后使用tr& mac2unix将换行符映射到保留字符并修复行终止符:
\r
当您完成文件整理后,tr '\n' '~' < Kontakte.csv | mac2unix > New.csv
将恢复重要性。
当然,使用适当的工具(例如CSV库)会好得多。