Emacs: импортируйте CSV в org-режим

Вычтите datetime.timedelta(days=1)

43
задан Paul Nathan 6 August 2009 в 21:25
поделиться

4 ответа

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

Что-то вроде этого должно сработать или, по крайней мере, дать вам отправную точку, которую вы можете взломать:

  #!/usr/bin/perl

  use strict;
  use warnings;

  use Text::CSV;

  my $csv = Text::CSV->new();

  while ( my $line = <DATA> ) {
    if ( $csv->parse( $line )) {
      my $str = join '|' , $csv->fields();
      print "|$str|\n";
    }
  }


  __DATA__
  1,2,3,4
  1,2,"3,4"
5
ответ дан 26 November 2019 в 22:52
поделиться

Из руководства по организационному режиму:

Копия | Преобразуйте активную область в Таблица. Если каждая строка содержит хотя бы один символ TAB, функция предполагает, что материал вкладки разделены. Если каждая строка содержит запятая, значения, разделенные запятыми (CSV) предполагаются. Если нет, строки разделяются в пробелы в поля. Вы можете использовать аргумент префикса, чтобы заставить конкретный сепаратор: Cu силы CSV, Cu Cu заставляет TAB, а числовой аргумент N указывает, что не менее N последовательных пробелы, или, альтернативно, TAB будет разделитель. Если нет активных региона, эта команда создает пустой Организационная таблица.

Так что просто вставьте данные в организационный файл, выберите его и выполните Cu Cc | .

70
ответ дан 26 November 2019 в 22:52
поделиться

Here is a bit of a hack-job, but it works.

when you export the CSV file, force quotes around each entry, then replace all "," as a vertical bar.

Finally, I make a macro that does something like this:

C-a    ; Beginning-of-line
|      ; Self-insert-char
C-e    ; end-of-line
|      ; Self-insert-char
<down> ; Down one line

(I am not 100% sure if | is a self-insert-char or not, so its best to record your own macro)

Hit tab somewhere in the middle of the table, and org-mode formats it properly. I find this easier to do in a narrowed region.

Caveat: If you have a vertical bar in your input.. it probably won't work quite right. Situations like that should be easy to spot, and relatively easy to fix.

Generally, when importing something text-like into org-mode, I have found a combination of some smart macro writing, and search-replace to be the easiest way

I hope that helps.

1
ответ дан 26 November 2019 в 22:52
поделиться

Попробуйте следующее:

;; Insert a file and convert it to an org table
(defun aleblanc/insert-file-as-org-table (filename)
  "Insert a file into the current buffer at point, and convert it to an org table."
  (interactive (list (ido-read-file-name "csv file: ")))
  (let* ((start (point))
    (end (+ start (nth 1 (insert-file-contents filename)))))
    (org-table-convert-region start end)
    ))
2
ответ дан 26 November 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: