Lua:
Работа с CSV

Как:

Давайте читать и записывать файлы CSV с помощью Lua. Мы рассмотрим базовый пример без внешних библиотек.

Чтение файла CSV:

function read_csv(filepath)
  local results = {}
  local file = assert(io.open(filepath, "r"))
  
  for line in file:lines() do
    table.insert(results, line:split(","))
  end
  
  file:close()
  return results
end

-- Вспомогательная функция для деления строк
function string:split(delimiter)
  local result = {}
  local from = 1
  local delim_from, delim_to = self:find(delimiter, from, true)
  while delim_from do
    table.insert(result, self:sub(from, delim_from - 1))
    from = delim_to + 1
    delim_from, delim_to = self:find(delimiter, from, true)
  end
  table.insert(result, self:sub(from))
  return result
end

Запись в файл CSV:

function write_csv(filepath, data)
  local file = assert(io.open(filepath, "w"))
  
  for _, row in ipairs(data) do
    file:write(table.concat(row, ",") .. "\n")
  end
  
  file:close()
end

-- Пример данных
local data = {
  { "Имя", "Возраст", "Город" },
  { "Алиса", "30", "Нью-Йорк" },
  { "Боб", "25", "Лос-Анджелес" }
}

write_csv("output.csv", data)

Углубляемся

История CSV уходит корнями в ранние дни вычислительной техники, когда ключевым было простота. Хотя теперь JSON и XML предлагают более богатые структуры данных, CSV остается популярным из-за своей читаемости и простоты редактирования с помощью табличного программного обеспечения. Когда дело доходит до реализации, следует быть внимательными к полям с запятыми, переносами строк или кавычками - они должны быть должным образом заключены в кавычки и/или экранированы.

Смотрите также