CSV转换

时间:2012-08-30 03:57:21

标签: csv

我一直在寻找一种方法来重新格式化一个带有if参数的CSV(管道分隔符)文件,我很确定这可以在PHP(strpos和if语句)中完成或使用XSLT但是想知道这是否在我去学习新语言之前,这是最好/最简单的方法。这是我想要实现的那种事情的一个小例子(真正的文件是大约25000行这是改变答案吗?)

99407350 |数学书#13(随机信息)| AB Collings | http:www.abc.com/ABC 497790366 |英语书| Harold Herbert | http:www.abc.com/HH

转换为:

99407350 |数学书|#13 | AB Collings | http:www.abc.com/ABC 497790366 |英语书|| Harold Herbert | http:www.abc.com/HH

关于我需要查看哪个方向的任何建议都会很棒。

1 个答案:

答案 0 :(得分:0)

PHP为此提供了getcsv()(PHP 5)和fgetcsv()(PHP 4和5),因此如果您在PHP环境中工作,请使用它。参见例如http://www.php.net/manual/en/function.fgetcsv.php

如果您自己做某事,请记得应对“... | ...”和/或\ |有|在一个领域内。或测试以确保它不会发生 - 例如如果发生了这种情况,请检查将数据库导出为CSV的代码。

另请注意 - 在Unix / Solaris / Linux / OS X系统上,      awk -F'|' '(NF!= 9)'yourfile.csv |厕所 将计算除9个字段以外的行数;如果你确定|除了作为字段分隔符之外,永远不会发生,awk也是一种完美的语言,例如同     awk -F'|' '{gsub(/ [(]。* [)] /,“”,$ 1); print}'yourfile.csv

在这里,[(]匹配(以某种方式适用于不同版本的awk,同样适用于[)]。