Вопрос

Я хотел бы импортировать CSV в режим ORG. Другие уже спрашивали о импорте таблиц CSV в ORG-MODE. Это не то, что я пытаюсь сделать. Мне нужно импортировать свойства CSV в ORG-MODE.

Например, CSV, как это:

Name,Tel,Mobile,Fax
John,11111,22222,33333

должен стать:

:PROPERTIES:
:Name: John
:Tel: 11111
:Mobile: 22222
:Fax: 33333
:END:

Вы служите, чтобы знать безболезненный способ сделать это?

Это было полезно?

Решение

Самый простой подход, который я могу видеть, это отметить строки данных в качестве области, а затем использовать поиск по регулированию REGEXP и заменить:

MX. replace-regexp Рентген \(.*\),\(.*\),\(.*\),\(.*\) Рентген :PROPERTIES: CQ CJ. :Name: \1 CQ CJ. :Tel: \2 CQ CJ. :Mobile: \3 CQ CJ. :Fax: \4 CQ CJ. :END: Рентген

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

Ответ USER310031 будет иметь хорошую основу для этого. Макрос может сузить буфер к каждой строке, вставьте строку заголовка над ним, выполнить csv-transpose (который, кажется, требует Режим CSV) сделать поиск + заменить, добавить в :PROPERTIES: а также :END: Линии, расширяют буфер снова и оставьте точку на линии до следующая строка данных. Тогда просто отметьте оставшиеся строки данных в качестве области, а введите CX CK R..

Другие советы

Используйте CSV-режим, транспонирование рядов и столбцов CSV-транспонированием и форматом с заменой Regexp:

поиск \(.*\),\(.*\)

Заменить на: :\1: \2

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

(let ((lines (with-temp-buffer
               (insert-file-contents "data.csv")
               (split-string (buffer-string) "\n")))
      (properties)
      (values))

  (setq properties (split-string (car lines) ","))

  (loop for line in (cdr lines)
        do
        (setq values (split-string line ","))
        (loop for property in properties
              for value in values
              do
              (org-entry-put (point) property value))))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top