Нужна программа для сортировки данных и перенос из txt в Excel, на JS - вопрос №5087135

Есть исходники — файлы txt с набором данных, а именно — в уже отсортированном АЛФАВИТНОМ порядке идут строки с фамилиями (все на англ языке) и неким описанием.
Нужно перекинуть все в EXCEL, объединив, где есть перенос информации, строки — чтобы вся информация для каждого БЫЛА НА ОДНОЙ СТРОКЕ, а не на двух, трех и т.д. — как в исходнике.
Желательно сделать на JS.
Пример.
Исходник в txt:
Carlson, Prof. A(nton) J(ullus),
University of Chicago, Chicago,
111.
Carlson, Dr. Carl S(lg'urd),
University of Pennsylvania,
10,
Результат переносимый в excel:
Carlson, Prof. A(nton) J(ullus), University of Chicago, Chicago, 111.
Carlson, Dr. Carl S(lg'urd), University of Pennsylvania, 10,
Нужно: нажал кнопку — загрузил исходники, получил файл (файлы) excel с сортировкой.
И ЕЩЕ — т.к. мне это надо понимать, я Вас попрошу потом рассказать, как что работает.
Пишите или звоните на вотсапп — 7 951 699 7226

Ответы

Для выполнения данной задачи можно использовать Node.js и библиотеку для работы с файлами в формате txt и csv, например, fs и csv-writer.

Пример решения задачи на JS:

javascript

const fs = require('fs');
const csvWriter = require('csv-writer').createObjectCsvWriter;

// Читаем данные из txt файла
const fileContent = fs.readFileSync('input.txt', 'utf-8');

// Разделяем данные на строки
const rows = fileContent.split('\n');

// Создаем массив для хранения результатов
const results = [];

// Обрабатываем каждую строку
for (let i = 0; i < rows.length; i++) {
  const row = rows[i];

  // Если строка не пустая
  if (row.trim() !== '') {
    // Добавляем текущую строку к предыдущей строке, если она начинается с пробела
    if (i > 0 && rows[i — 1].endsWith(' ') && !row.startsWith(' ')) {
      results[results.length — 1].description += row.trim();
    } else {
      // Создаем новую запись в результате
      const [name, description] = row.split(',');
      results.push({
        name: name.trim(),
        description: description.trim()
      });
    }
  }
}

// Сортируем результат по имени
results.sort((a, b) => a.name.localeCompare(b.name));

// Записываем результат в csv файл
const csvWriterInstance = csvWriter({
  path: 'output.csv',
  header: [
    { id: 'name', title: 'Name' },
    { id: 'description', title: 'Description' }
  ]
});

csvWriterInstance.writeRecords(results).then(() => {
  console.log('The CSV file was written successfully!');
});


Как это работает:

Считываем данные из файла input.txt.
Разделяем данные на строки.
Создаем массив для хранения результатов.
Обрабатываем каждую строку. Если строка не пустая, то:
Если строка начинается с пробела, добавляем ее к предыдущей строке.
Иначе, создаем новую запись в результате с именем и описанием.
Сортируем результат по имени.
Записываем результат в файл output.csv в формате CSV с помощью библиотеки csv-writer.
Чтобы использовать этот код, нужно установить библиотеки fs и csv-writer с помощью npm. Для этого необходимо выполнить следующие команды в командной строке:


npm install fs
npm install csv-writer


После этого можно запустить скрипт с помощью команды:


node script.js


Где script.js — это название файла с кодом. Результат будет записан в файл output.csv.

08.04.23

Глеб Черняк

Сейчас на сайте
Читать ответы

Виталий

Читать ответы

Олег Николаевич

Читать ответы
Посмотреть всех экспертов из раздела Технологии
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store