我的CSV文件存在以下问题。
line 1: "x","y","z","
line 2:
line 3: "," ",": "
这是一行,但已写成多行。不幸的是,我不能要求提供商修复它。有没有办法解决它?
答案 0 :(得分:0)
阅读文件。转到每一行并将输出附加到变量。然后你就拥有了所有的线条。
$output = '';
foreach($lines as $line) {
$output .= $line;
}
阅读csv文件,您可以使用fgetcsv。如果line 1:
是csv文件的一部分,则将输出拆分为:
并使用第二部分。
答案 1 :(得分:0)
一个小C程序,计算"
并在此计数为奇数时抑制\n
。我怀疑这是否可以用更少的行来进行...
/***
Usage ./a.out <the_file.csv > the_file.out
**/
#include <stdio.h>
int main(void)
{
int ch, state;
for(state=0; ;) {
ch= getc(stdin);
if (ch == EOF) break;
if (ch == '"') state++;
if (ch == '\n') {if (state %2) continue; else state=0; }
putc(ch, stdout);
}
if (state %2) {putc('"', stdout);
return 0;
}
注意:如果输入文件中有转义引号(\"
),这当然会失败。