Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 11

Реорганизация CSV-файла

25.01.2017, 18:45. Показов 1201. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть cvs вида :

vendor;model;year;modification;name;type
Acura;CL;1998;"2.3 i";"205/55 R16";"Заводская комплектация:"
Acura;CL;1998;"2.3 i";"215/45 R17";"Варианты замены:"
Acura;CL;1998;"2.3 i";"215/40 R18";"Варианты замены:"
Acura;CL;1998;"3.0 i";"205/55 R16";"Заводская комплектация:"
Acura;CL;1998;"3.0 i";"215/45 R17";"Варианты замены:"
Acura;CL;1998;"3.0 i";"215/40 R18";"Варианты замены:"

нужно создать другой cvs и вывести в нем данные из первого в виде :
IE_XML_ID;IE_NAME;IE_CODE;IC_GROUP0;IC_G ROUP1;IC_GROUP2;IC_GROUP3
acura-cl-1998-2-3-i-215_45_17;215/45R17;215_45_17;Acura;CL;1998;2.3 i
acura-cl-1998-2-3-i-215_40_18;215/40R18;215_40_18;Acura;CL;1998;2.3 i
acura-cl-1998-3-0-i-205_55_16;205/55R16;205_55_16;Acura;CL;1998;3.0 i
acura-cl-1998-3-0-i-215_45_17;215/45R17;215_45_17;Acura;CL;1998;3.0 i
acura-cl-1998-3-0-i-215_40_18;215/40R18;215_40_18;Acura;CL;1998;3.0 i

Добавлено через 12 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$fh = fopen ( 'Acura.csv', 'r' );
for($i=0; $info = fgetcsv ($fh, 1000, ";"); $i++)
{
list($vendor, $model, $year, $modification, $name, $type) = $info;
 
}
fclose ( $fh );
 
$csv = fopen('final.csv', 'a+');
       createCsv($data, $csv);
       fclose($csv);
        
        function createCsv($data,$csv)
    {
        $head = array('IE_XML_ID','IE_NAME','IE_CODE','IC_GROUP0','IC_GROUP1','IC_GROUP2','IC_GROUP3');
          fputcsv($csv, $head ,';'); 
        
 
      
       }
    
         
    ?>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2017, 18:45
Ответы с готовыми решениями:

Разбиение CSV файла на много csv файлов по разделителю
Здравствуйте, есть файл в который нужно разделить, но не ровно по 30 строк например, а по 25, 23, 27. Как это можно сделать?

Импорт данных из файла .csv в mysql сразу же после загрузки файла на сервер
Коллеги! Добрый день! Помогите пожалуйста. Задача состоит в том, чтобы через форму страницы загрузить файл расширения .csv на сервер и...

Реорганизация интерфейса
Ребят, спасайте... Конечному пользователю не нравится, как происходит выбор нескольких записей. В чем задача: юзеру должна быть...

3
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
25.01.2017, 21:56
EvilBoo,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getNewRow($row) {
    $row = str_replace('"', '', $row);
    $items = explode(';', $row);
    $newRow = mb_convert_case(preg_replace('~[ \./]+~', '-', implode('-', array_slice($items, 0, -2))), MB_CASE_LOWER);
    $temp = preg_replace('~[R /]+~', '_', $items[4]);
    $newRow .= '-' . $temp;
    $newRow .= ';' . str_replace(' ', '', $items[4]) . ';';
    $newRow .= $temp . ';';
    $newRow .= implode(';',  array_slice($items, 0, 4));
 
    return $newRow;
}
$file = file('file1.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$file = array_slice($file, 1);
$result = 'IE_XML_ID;IE_NAME;IE_CODE;IC_GROUP0;IC_GROUP1;IC_GROUP2;IC_GROUP3';
foreach ($file as $line) {
    $result .= getNewRow($line);
}
file_put_contents('file2.csv', $result);
1
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
25.01.2017, 22:10
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$_ = file('file.csv');
$now_csv_file = 'now_csv_file.csv';
    unset($_[0]);
$arr = []; $i = 0;
array_map(function($v) use (&$arr,&$i){
    $text = str_replace(['"'],[''],$v);
     list($a,$b,$c,$d,$e) = explode(";",$text);
$temp_1 = preg_split("~\.|\\s+~",$d,-1,PREG_SPLIT_NO_EMPTY);
$temp_2 = str_replace(['/','R',' '],['_','_',''],$e);
         if ($i == 0) 
            $arr[$i++] = 'IE_XML_ID;IE_NAME;IE_CODE;IC_GROUP0;IC_GROUP1;IC_GROUP2;IC_GROUP3'; 
     $arr[$i] = str_replace('"','',strtolower($a.'-'.$b.'-'.$c.'-'.$temp_1[0].'-'.$temp_1[1].'-'.$temp_1[2].'-'.$temp_2));
     $arr[$i] .= ';'.str_replace(' ','',$e).';'.$temp_2.';'.$a.';'.$b.';'.$c.';'.$d;
    $i++;
},$_);
        file_put_contents($now_csv_file,implode("\r\n",$arr),FILE_APPEND);
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
25.01.2017, 22:51
Лучший ответ Сообщение было отмечено Kerry_Jr как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$in = fopen('in.csv', 'r');
$out = fopen('out.csv', 'w');
 
fgetcsv($in, 0, ';');
fputcsv($out, ['IE_XML_ID', 'IE_NAME', 'IE_CODE', 'IC_GROUP0', 'IC_GROUP1', 'IC_GROUP2', 'IC_GROUP3']);
 
while ($row = fgetcsv($in, 0, ';')) {
    $row2 = str_replace([' ', '.'], '-', $row[3]);
    $row3 = str_replace([' ', '/', 'R'], ['_', '_', ''], $row[4]);
    fputcsv($out, [
        strtolower("$row[0]-$row[1]-$row2-$row3"),
        str_replace(' ', '', $row[4]),
        $row3, $row[0], $row[1], $row[2], $row[3]
    ], ';');
}
 
fclose($in);
fclose($out);
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2017, 22:51
Помогаю со студенческими работами здесь

Реорганизация ЛВС
Доброго всем дня! Прошу у Вас помощи в переорганизации, перенастройке, доведение ния до ума компьютерной сети среднего предприятия. ...

Реорганизация сети
На приход стоит предположительно MikroTik RB951Ui-2HnD, в нем 2 линка от разных провайдеров на 15 и 50 мб, которые работают одновременно. ...

Реорганизация матрицы
Здравствуйте. У меня такой вопрос, я задал матрицу транспонировал её но возникла проблема с сортировкой строк транспонированной матрицы в...

Реорганизация журнала
Всем добрый день! В лаборатории, в которой я работаю, существует журнал учета работы сканирующего микроскопа. Журнал представляет собой...

Реорганизация сети на работе
Приветствую Всех! Наконец то я добрался до создания небольшой сети на работе. Все досталось в ужасном виде, и как бы не обязан я это все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru