2

CSV ファイルから空白の ROWS をすべて削除することはできますか?

CSV ファイルからすべての行をカウントしようとしていますが、特定の列または行全体に値が含まれていない行を除外したいと考えています。

これは、現時点で行を数えるために使用しているものです。

$import = file($target_path, FILE_SKIP_EMPTY_LINES);
$num_rows = count($import);
echo $num_rows;

サンプル:

Jun,Bronse,137 Raven,Princeton,TX,75407,2147088671,Nell@Gmail.Com,1990,CHEVROLET,K1500,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
Nella,Brown,111 Venna St,Princeton,TX,75407,2147177671,lakb@Gmail.Com,1993,CHEVROLET,K1500,,
Jun,Bronse,137 Raven,Princeton,TX,75407,2147088671,Nell@Gmail.Com,1990,CHEVROLET,K1500,,
,,,,,,,,,,,,
Jun,Bronse,137 Raven,Princeton,TX,75407,2147088671,Nell@Gmail.Com,1990,CHEVROLET,K1500,,
4

5 に答える 5

11
$lines = file("test.csv", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$num_rows = count($lines);
foreach ($lines as $line) {
    $csv = str_getcsv($line);
    if (empty($csv[SPECIFIC_COLUMN])) {
        $num_rows--;
    }
}

特定の列をチェックしたくないが、すべての列が空の行を除外するだけの場合は、次のように変更します。

    if (count(array_filter($csv)) == 0) {
于 2014-01-31T20:21:21.660 に答える
0

基本的にはBarmarがすでに投稿したものですが、(多くの)大きな*ファイルを処理する必要がある場合は、試してみることをお勧めしrtrimますltrim.

$lines = file("test.csv", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$num_rows = count($lines);
foreach ($lines as $line) {
    if (!rtrim($line, ',')) {
        $num_rows--;
    }
}

*概して私はそれが本当に価値があることを意味します。マイクロ最適化で時間を無駄にしないでください。

于 2014-02-03T20:53:10.953 に答える
0
$filename = "test.csv";

if (($fp = fopen($filename, "r")) !== FALSE) { 
    $rows = explode("\n", $fp);
    $csv = "";

    foreach($rows as $r) {
        if(str_replace(array(" ", ","), "", $r) != "")
            $csv .= $r."\n";
    }

    file_put_contents($filename, $csv);;
}
于 2014-01-31T20:17:45.420 に答える