W
W
weranda2015-02-27 14:58:35
JavaScript
weranda, 2015-02-27 14:58:35

How to process a large amount of data with the right formatting?

Приветствую.
Имеется десять десять тысяч строк следующего формата:
В EXCEL:
1 параметр 1
1 параметр 2
1 параметр 3
2 параметр 4
2 параметр 5
3 параметр 6
3 параметр 7
3 параметр 8
Или в CSV:
1;параметр 1
1;параметр 2
1;параметр 3
2;параметр 4
2;параметр 5
3;параметр 6
3;параметр 7
3;параметр 8
Нужно привести эти данные в следующий вид в CSV(Excel):
1;параметр 1|параметр 2|параметр 3
2;параметр 4|параметр 5
3;параметр 6|параметр 7|параметр 8
Вопрос: Как это можно сделать?I've already broken my whole brain, I'm not strong in scripts, in regular seasons too. Can you please tell me the fastest and easiest way to do this?

Answer the question

In order to leave comments, you need to log in

7 answer(s)
S
Saboteur, 2015-02-27
@weranda

на перле
open(DATA,"data.csv");
$last="";
foreach $line ( ) {
chomp $line;
($id,$value)=split(";",$line);
if ($last==$id) { print "|$value"; }
else { $last=$id; print "\n$id;$value"; }
}
C:\test>perl.exe a.pl
1;параметр 1|параметр 2|параметр 3
2;параметр 4|параметр 5
3;параметр 6|параметр 7|параметр 8

M
M-ka, 2015-02-27
@M-ka

эти данные же в файлах, а значит тут вообще жс не при делах...
1. надо писать скрипт на другом языке, который откроет файл, считает данные, поколбасит, создаст где то файл, запишет поток, сохранит изменения...
2. если это пара файлов, тогда уже можно копипастом заняться, что бы все строки запихнуть в переменную.
ну а строку с
1;параметр 1
1;параметр 2
1;параметр 3
сконвертить до состояния
1;p1|p2|p3 раз плюнуть в цикле
Сначала строку разбить на подстроки по переносу через split, в результате будет массив из строк.
Потом массив обойти в цикле. В процессе обхода строку можно разбить на 2 подстроки и снова через split по ";". Результат разбивания записать в какой то более глобальный обьект, в котором ключем будет в виде строки №, а в качестве параметра значение... вот только дописывать значение, а не заменять (аля x += доп параметр).
В результате у нас будет обьект типа
{
1: 'a|b|c' //при дописывании |, не ставить, если это только созадется
2: 'a|b|c'
}
Ну а после этого всего, объект представить в виде строки и делов то...
Вот тут подумал, оказалось и еще проще, потому убрал комментарий в отношении конвертации объекта в строку через ту стринг подобное ну и добавил следующее:
Обойти через фор ин объект... и формировать строку в следующем формате
ключь ";" значение (ну у нас же значение и так строка) перенос строки, в результате будет строка, которую тоже сохранить через x+= значение, а результат сохранить уже через копипаст в нужный файл или послать аяксом куда то в виде контента...
Вот только влезет ли при посте оно? Там же лимит.... Тут только постом думать

Антон, 2015-02-27
@brud

регулярка сложноватая выйдет
думаю, проще и нагляднее будет, если разбить эти данные на массив, и в фориче смотреть первый символ

K
kirilldzr, 2015-02-27
@kirilldzr

AWK вам в помощь. Сам им пользовался для подобных задач.

A
Alex P., 2017-11-22
@J_Sleiter

Use https://getpocket.com to save useful URLs

S
Sergey, 2017-11-22
@spacecrew

Try swiper
idangero.us/swiper

A
Alexander Reshetnyak, 2018-01-11
@Vampireos

I advise jssor.com to look and forget all the rest)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question