Чтение CSV и запись его столбцов в другой CSV-файл - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь извлечь определенные столбцы из файла CSV и пытаюсь сохранить их в другом файле CSV.Мой CSV-файл разделен табуляцией, а некоторые значения столбцов находятся в отдельных строках.Когда я пытаюсь прочитать и записать его в другой файл, он считает их разными столбцами и записывает их в разные строки.Я хочу, чтобы выходной файл был похож на информацию, представленную в CSV-файле.Любая помощь будет оценена.

Когда я импортирую исходный файл CSV, есть несколько столбцов, которые находятся в разных строках, потому что \n\r.Я пробовал несколько подходов, но получаю схожие результаты.Содержимое в test.csv (\t - вкладка):

"abc" \t "123" \t "Tom"

"xyz" \t 

"456" \t "Jack"

"mno" \t "789" 

\t "Jim"
$file1 = 'try.csv';
$fp=fopen($file1,'w');
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) 
    {
        $num = count($data);
        for ($c=0; $c < 2; $c++) 
        {
            echo $data[$c] . "<br />\n";
        fwrite($fp, $data[$c]);

        }
    fwrite($fp,"\n");
    }
    fclose($fp);
    fclose($handle);
}

Я хочу, чтобы вывод был в этом формате.

"abc" \t "123" 

"xyz" \t  "456"

"mno" \t  "789"

1 Ответ

0 голосов
/ 18 мая 2019

Это лучшее, что я могу сделать, учитывая предоставленные вами данные

$string = <<<CSV
"abc" \t "123" \t "Tom"
"xyz" \t
"456" \t "Jack"
"mno" \t "789"
\t "Jim"
CSV;

print_r(array_chunk(array_filter(array_map('trim',preg_split("/\t|\r\n|\n/", $string))), 3));

Выход:

Array
(
    [0] => Array
        (
            [0] => "abc"
            [1] => "123"
            [2] => "Tom"
        )

    [1] => Array
        (
            [0] => "xyz"
            [1] => "456"
            [2] => "Jack"
        )

    [2] => Array
        (
            [0] => "mno"
            [1] => "789"
            [2] => "Jim"
        )

)

Песочница

Это не волшебство, это код!

PS. замените $string содержимым вашего файла и надеемся, что в данных нет вкладок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...