Логика формирования csv файла

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Пытаюсь изобразить шаблон который в идеале будет формировать csv файл из уже имеющегося (выгрузка с aliexpress) но с дополнительными полями спецификации товара в виду того что исходная выгрузка имеет ооочень мало информации о товаре.

Логику я построил так: из исходного файла спарсил все названия и значения характеристик, причесал все это добро, получил список-эталон будущих заголовков. Далее беру отдельный продукт и его характеристики. Хоть товары и однотипные, но названия характеристик имеют массу отличий, китайские продаваны оформляют их кто как может)))
А вот теперь у меня ступор, как устроить дальнейшую логику работы, на данный момент у меня есть два списка, список-эталон со всеми названиями характеристик касательно одной выгрузки и список одного из товаров этой же выгрузки. В идеале мне надо сделать так чтобы список эталон был в шапке csv, а значения характеристик каждого продукта добавлять строкой ниже. Не могу сообразить как выполнить сравнение названия характеристики с последующим "присвоением" значения к совпавшей, учитывая порядок для каждого продукта (наличия или отсутствия названия характеристики). В общем подскажите в каком направлении копать дальше)
С Наступающим!
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
А Вы можете предоставить все эти списки? Эталон, выгрузка по нескольким позициям (чтоб понимать чем характеристики могут отличаться) и итоговый список, как всё должно выглядеть.

Так будет намного проще что-то подсказать.
 
  • Спасибо
Реакции: gexweb

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
В идеале я бы хотел дополнить оригинальную выгрузку сформированными названиями и значениями характеристик. Но это пока не так важно)))
 

Вложения

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Как бы это сделал я:
- создал таблицу (table), в заголовок внёс все известные характеристики.
- перед добавлением нового товара сохраняем кол-во строк в таблице (rows)
- при добавлении товара берём его характеристику и ищем в заголовке таблицы table
-- если такая характеристика есть в заголовке, получаем порядковый номер колонки, в которой она находится (column);
-- если характеристика не найдена, то добавляем в конец новый столбец, в заголовке указываем название характеристики; теперь возвращаемся на предыдущий шаг и ищем порядковый номер столбца, в котором находится новая характеристика.
- потом добавляем характеристику в ячейку, в качестве номера строки указываем кол-во строк ( rows ), и номер столбца, полученный в предыдущем шаге (column)
 
  • Спасибо
Реакции: gexweb и Astraport

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Если я правильно просёк вашу логику, внесу некоторое уточнение. Есть название характеристики и есть её значение. Так вот касательно построения "шапки" из названий характеристик, первым шагом я получаю все возможные названия из текущей выгрузки(оригинальной) и опять же выделю момент, эти названия относительно этой выгрузки меняться уже не будут. Этим названиям следующим этапом для каждого продукта нужно присвоить значения, то есть дописывать названия характеристик нет необходимости, отсутствующих не может быть по определению. Названия будут отсутствовать у отдельно взятого продукта.(соответственно и значения тоже)

В общем не просёк видимо)))
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Например у нас изначально такая таблица:
НазваниеЦенаРазмерВес

Привязываем этот файл к Таблице внутри проекта. Берём товар, например у него есть такие характеристики: Название, Вес, Цена, Производитель.

Сначала получаем кол-во строк в таблице - 1 (rows).
Затем берём первую характеристику товара и проверяем есть ли такая характеристика в нашей табличке: для этого ищем её индекс в первой строке (строке заголовков). Например Название, индекс - 0 (column) (нумерация начинается с нуля).
Сохраняем характеристику Название текущего товара в ячейке rows (==1) и column (==0)
Для Размер индекс == 2, для Вес == 3.

Колонки Производитель нет в изначальной таблице. Индекс для неё будет -1 (минус один). Поэтому нам надо создать новую колонку: получаем кол-во столбцов в текущей таблице (new_column_index), это будет индекс для создания новой колонки. Создаём новую колонку в рядке 0 (ноль) и колонке new_column_index , сохраняем индекс вновь созданной колонки в переменную column

После этого добавляем характеристику в ячейку с индексом строки rows и индексом колонки column

И так для всех характеристик.

Плюс в том, что при таком подходе новые характеристики будут добавляться автоматом. И мы не будем зависеть от порядка характеристик в итоговой таблице и в описании товара, т.к. индекс вычисляется динамически.


Не исключаю того, что, возможно, описано запутано.
Если не понятна моя логика, то давайте подождём ещё кого-то, кто сможет более ясно выразить свои мысли :bk:
 
  • Спасибо
Реакции: gexweb

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)