Я предполагаю, что вы хотите преобразовать свой 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"
Из руководства по организационному режиму:
Копия | Преобразуйте активную область в Таблица. Если каждая строка содержит хотя бы один символ TAB, функция предполагает, что материал вкладки разделены. Если каждая строка содержит запятая, значения, разделенные запятыми (CSV) предполагаются. Если нет, строки разделяются в пробелы в поля. Вы можете использовать аргумент префикса, чтобы заставить конкретный сепаратор: Cu силы CSV, Cu Cu заставляет TAB, а числовой аргумент N указывает, что не менее N последовательных пробелы, или, альтернативно, TAB будет разделитель. Если нет активных региона, эта команда создает пустой Организационная таблица.
Так что просто вставьте данные в организационный файл, выберите его и выполните Cu Cc |
.
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.
Попробуйте следующее:
;; 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)
))