Нужна программа для сортировки данных и перенос из 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