2017-07-09 59 views
0

我有一個CSV文件,它有以下問題。如何合併CSV文件中的兩行

line 1: "x","y","z"," 
line 2: 
line 3: "," ",": " 

這是一行,但已被寫成多行。不幸的是,我不能要求提供商修復它。有沒有辦法可以解決它?

+0

刪除空行? – wildplasser

+0

我可以使用sed刪除空行(第2行),但我需要合併第1行和第3行。此問題隨機發生在大型CSV文件中。 –

+0

啊哈。每個邏輯記錄總是有三條物理線路? (或者是分裂不規則?)BTW是字符串中添加的'\ n'部分,它們是否應該被轉義? – wildplasser

回答

0

閱讀文件。去槽每一行,並將你的輸出附加到一個變量。然後,你有所有的線路彼此接連。

$output = ''; 

foreach($lines as $line) { 
    $output .= $line; 
} 

要讀取csv文件,您可以使用fgetcsv。如果line 1:是您的csv文件的一部分,然後拆分您的輸出:並使用第二部分。

+0

對不起,第1行:不是包括它來解釋問題的一部分。 –

0

一個小型的C程序,計數"並抑制\n,如果這個計數是奇數。我懷疑這可能在更少的行SED做...


/*** 
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; 
} 

注:如果有逃脫輸入文件引號(\")這當然會失敗。

相關問題