次の問題があるCSVファイルがあります。CSVファイルで2行をマージする方法
line 1: "x","y","z","
line 2:
line 3: "," ",": "
これは一行ですが、複数の行で記述されています。残念ながら、私はプロバイダにそれを修正するよう依頼することはできません。私たちはそれを修正する方法はありますか?
次の問題があるCSVファイルがあります。CSVファイルで2行をマージする方法
line 1: "x","y","z","
line 2:
line 3: "," ",": "
これは一行ですが、複数の行で記述されています。残念ながら、私はプロバイダにそれを修正するよう依頼することはできません。私たちはそれを修正する方法はありますか?
ファイルを読みます。すべての行をトラフし、出力を変数に追加します。そして、あなたはお互いにすべての行を持っています。
$output = '';
foreach($lines as $line) {
$output .= $line;
}
fgetcsvを使用すると、csvファイルを読み取ることができます。 line 1:
があなたのcsvファイルの一部である場合は、:
で出力を分割し、2番目の部分を使用してください。
申し訳ありません。ファイルの一部に、問題を説明するために含まれています。 –
"
をカウントし、このカウントが奇数の場合は\n
を抑制する小さなCプログラムです。これは、より少ない行で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;
}
注:入力ファイル内の引用符(\"
)がエスケープされている場合は、もちろん、この意志は失敗します。
空の行を削除しますか? – wildplasser
sedを使って空行(2行目)を削除できますが、1行目と3行目をマージする必要があります。この問題は大きなCSVファイルでランダムに発生しています。 –
Aha。論理レコードごとに常に3つの物理行がありますか? (または分割された不規則なものですか?)BTWは、文字列の '\ n'部分に追加されたもので、エスケープされているはずですか? – wildplasser