Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
monkey2018
0 / 0 / 0
Регистрация: 25.03.2018
Сообщений: 3
1

Построчное чтение txt файла с преобразованием в csv

25.03.2018, 21:37. Просмотров 307. Ответов 1
Метки нет (Все метки)

Здравствуйте.

Есть тестовый файл, где построчно записан набор характеристик, со значением характеристик.
В каждой строке свой набор характеристик и их значений.

Такого вида:

Код
Вес: 1кг , Длина: 2метра, Ширина: 1 метр, Материал: Дерево
Количество: 2 , Ширина: 5 метров, Материал: Пластик
Длина: 3 метра, Вес: 6 кг
Пытался сам, но пока только получилось построчно вывести в цикле содержимое строк.

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

Так как разделители столцов разделены в csv знаком ';' , примерно такой вид на выходе нужен:

Код
Вес; Длина; Ширина; Материал; Количество
1кг; 2 метра; 1 метр; Дерево;                 
    ;    ;5 метров; Пластик;  2  
6кг; 3 метра;    ;    ;
Помогите пожалуйста.

Добавлено через 7 часов 0 минут
Написал нужный вариант на PHP/

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
25
26
$f = file('import.txt');
 
$prop = array();
$values = array();
foreach($f as $keyline => $line){ //перебираем построчно файл
    $blocks = explode(',',$line); //разбиваем строку по запятым и получаем массив
    foreach($blocks as $oneblock){
       $valKey = explode(':',$oneblock); 
       $prop[] = trim($valKey[0]); //все хар-ки пишем в массив
       $values[$keyline][trim($valKey[0])] = trim($valKey[1]); //все значения записываем в массив
    }
}
 
$prop = array_unique($prop);//уникализируем названия характристик
 
$fp = fopen('result.csv','w'); //файл для записи
fputcsv($fp, $prop, ';'); //записываем названия столбцов
 
for($i=0;$i<sizeof($f);$i++){
    foreach($prop as $oneprop){
      $resline[] = $values[$i][$oneprop]; //массив i строки 
    }
    fputcsv($fp, $resline, ';'); // построчно записываем характеристики
    unset($resline); //очищаем переменную
}
fclose($fp);
Может кто-нибудь сможет переложить на bat?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2018, 21:37
Ответы с готовыми решениями:

Построчное чтение файла со случайным выбором строки
Добрый день! Коллеги подскажите как реализовать средствами bat/cmd следующую задачу: есть некий...

Построчное чтение файла и разбор каждой 6-ой строки для получения и использования определённых данных
Добрый вечер! Необходимо прочитать текстовый файл в котором каждая 6-я строка начинается с TR01, в...

Построчное чтение переменных
Приветствую всех! Есть некий текстовый файл с содержимым: Переменная1 Переменная2 Переменная3...

Вставить N последних строк одного TXT-файла в конец другого TXT-файла
Здравствуйте, подскажите пожалуйста, как можно скопировать n последних строк одного тхт файла и...

Построчное чтение txt файла с разделителями
Здравствуйте есть некий файл в котором находятся строки c разделителем (:) задача заключается в...

1
alpap
1893 / 1389 / 457
Регистрация: 26.04.2015
Сообщений: 4,710
26.03.2018, 00:48 2
Цитата Сообщение от monkey2018 Посмотреть сообщение
переложить на bat?
а надо? Здесь есть как php засунуть в bat, если уже так хочется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2018, 00:48

Построчное чтение из текстового файла .txt
Имеется текстовый файл fin.txt, в котором построчно записана информация подобным типом: Марка...

Построчное чтение файл csv
Здравствуйте. Направьте в правильную сторону. Есть файл весом в 400мб формат csv нужно...

Как правильно сделать построчное чтение txt файла, чтобы потом эти данные выводились в теге <table></table>?
У меня есть файл file.txt: Саша 12 руб. Рома 76 руб. Петя 120 руб. Маша 234 руб. Я пытаюсь...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru