Есть ли парсер для вывода из Perl's Text :: Table? - PullRequest
1 голос
/ 30 мая 2009

Предположим, у меня есть несколько таблиц, созданных с помощью Text :: Table . Существует ли парсер для преобразования их обратно в структуры данных Perl, или я должен написать свой собственный?

Ответы [ 5 ]

2 голосов
/ 30 мая 2009

Text :: Table - модуль для создания презентаций данных. Если бы он предназначался для хранения и извлечения (то есть в формате файла), он включал бы методы анализа существующих таблиц.

2 голосов
/ 30 мая 2009

Кажется несколько запутанным. Если у вас была информация до ее преобразования в таблицу, то зачем пытаться анализировать ее из формы представления? Это все равно, что иметь текстовый файл, преобразовать его в латекс, затем в postscript, а затем попытаться вернуть текст из файла postscript.

Я уверен, что есть способ проанализировать выходные данные Text :: Table, но кажется, что ваш рабочий процесс имеет недостатки; Я хотел бы использовать более простой вывод для данных (помимо Text :: Table, если вам действительно нужен такой способ), например YAML, который затем можно легко восстановить в исходную структуру данных.

0 голосов
/ 01 июня 2009

Почему бы не использовать CSV?

CSV не очень хорош для восприятия человеком, если у вас много столбцов различной длины, но это можно сделать в крайнем случае.

Хорошая вещь о CSV состоит в том, что любая электронная таблица (как и многие другие инструменты) будет анализировать и отображать CSV приятным и дружественным способом.

Обновление

Брайан,

На основании этого комментария ФП выше:

Клиенту нужен табличный формат данных, который может быть как человеческим, так и машиночитаемым. - Гораций Леб 31 мая в 3:26

Я пришел к выводу, что он контролировал создание кода как потребляющего кода.

Мой ответ на самом деле отвечает на вопрос: «Какой формат я могу использовать, чтобы он мог читаться человеком и машиной?»

0 голосов
/ 31 мая 2009

Вы можете сохранить их как Perl, прежде чем вывести их. Таким образом, то, что вы напечатали один раз, может быть перепечатано по требованию. См. Storable - или YAML :: Syck , который выводит его в YAML.

Если у вас есть формат для Сохраняемый , вы можете

  1. Прочитать файл в
  2. Имеется какой-то стандартный формат для проверки запрашиваемых изменений.
  3. Запишите его обратно, если изменилось.

Однако в YAML может быть достаточно просто изменить файл YAML.

YAML для примера, приведенного для Text :: Table , выглядит следующим образом:

--- !!perl/hash:Text::Table 
blank: ~
cols: 
  - 
    - Mercury
    - Venus
    - Earth
    - Jupiter
  - 
    - 2360
    - 6110
    - 6378
    - 71030
  - 
    - 3.7
    - 5.1
    - 5.52
    - 1.3
forms: 
  - "%s %s %s"
  - "%s %s %s"
lines: ~
spec: 
  - 
    align: auto
    align_title: left
    align_title_lines: left
    sample: []

    title: 
      - Planet
  - 
    align: auto
    align_title: left
    align_title_lines: left
    sample: []

    title: 
      - Radius
      - km
  - 
    align: auto
    align_title: left
    align_title_lines: left
    sample: []

    title: 
      - Density
      - g/cm^3
titles: 
  - 
    - Planet
    - "      "
  - 
    - Radius
    - "km    "
  - 
    - Density
    - "g/cm^3 "
0 голосов
/ 30 мая 2009

Выполнив 'site: search.cpan.org "Text :: Table" parse' search в Google, я не нашел для этого модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...