* [OT] CSV to Org @ 2011-11-22 22:56 Samuel Wales 2011-11-22 23:31 ` Nick Dokos 2011-11-30 12:13 ` Eric S Fraga 0 siblings, 2 replies; 7+ messages in thread From: Samuel Wales @ 2011-11-22 22:56 UTC (permalink / raw) To: emacs-orgmode I have an old CSV that looks like this. I'd like to convert it to Org format. I think I want to use properties for every field except Name (headline) and Note (body text with \r\n meaning newline). What is the best way to do this? "Na&me","&W","&H","A","B","N&et","&File","&Title","&Org","Addr&1","C&i","&St","&Zip","Addr&2","&Pc","&Note","gp","a&k","g&c","&Do","g&a" "some name something","823-2323","233-2323 as a a a a as","2323 something","","2323 fax? 3333 fax!","soao-sss.ss","","","","","","","","","",0,0,0,0,0 "bob and sylvia whosit","","","","","sylvia@sssssss.stanford.edu","","","","","","ca","","","","friend sss\r\nwwwww\r\nzsdddddd\r\nwwww\r\n",0,0,0,0,0 ... More generally, I wonder if there is a general mechanism, as I imagine this (with variations) is pretty common. I am aware of the table importer. Thanks. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-22 22:56 [OT] CSV to Org Samuel Wales @ 2011-11-22 23:31 ` Nick Dokos 2011-11-23 1:16 ` Samuel Wales 2011-11-30 12:13 ` Eric S Fraga 1 sibling, 1 reply; 7+ messages in thread From: Nick Dokos @ 2011-11-22 23:31 UTC (permalink / raw) To: Samuel Wales; +Cc: nicholas.dokos, emacs-orgmode Samuel Wales <samologist@gmail.com> wrote: > I have an old CSV that looks like this. I'd like to convert > it to Org format. > > I think I want to use properties for every field except Name > (headline) and Note (body text with \r\n meaning newline). > > What is the best way to do this? > > "Na&me","&W","&H","A","B","N&et","&File","&Title","&Org","Addr&1","C&i","&St","&Zip","Addr&2","&Pc","&Note","gp","a&k","g&c","&Do","g&a" > "some name something","823-2323","233-2323 as a a a a as","2323 > something","","2323 fax? 3333 > fax!","soao-sss.ss","","","","","","","","","",0,0,0,0,0 > "bob and sylvia > whosit","","","","","sylvia@sssssss.stanford.edu","","","","","","ca","","","","friend > sss\r\nwwwww\r\nzsdddddd\r\nwwww\r\n",0,0,0,0,0 > ... > > More generally, I wonder if there is a general mechanism, as I imagine > this (with variations) is pretty common. > Personally, I'd write a little python program to do the transformation. There is a csv module that turns a record into a list of fields. IIRC, there is also one that turns a record into a dict, so you can get the fields by name. I can dig further if you are interested. The following code comes straight from the docs: --8<---------------cut here---------------start------------->8--- import csv reader = csv.reader(open("foo.csv", "rb")) for row in reader: print row --8<---------------cut here---------------end--------------->8--- On your example, it gives ,---- | ['Na&me', '&W', '&H', 'A', 'B', 'N&et', '&File', '&Title', '&Org', 'Addr&1', 'C&i', '&St', '&Zip', 'Addr&2', '&Pc', '&Note', 'gp', 'a&k', 'g&c', '&Do', 'g&a'] | ['some name something', '823-2323', '233-2323 as a a a a as', '2323\nsomething', '', '2323 fax? 3333\nfax!', 'soao-sss.ss', '', '', '', '', '', '', '', '', '', '0', '0', '0', '0', '0'] | ['bob and sylvia\nwhosit', '', '', '', '', 'sylvia@sssssss.stanford.edu', '', '', '', '', '', 'ca', '', '', '', 'friend\nsss\\r\\nwwwww\\r\\nzsdddddd\\r\\nwwww\\r\\n', '0', '0', '0', '0', '0'] `---- So row[0] is the name, row[15] is the note, etc. Ruby, perl, etc. can probably do it easily too. You probably want something like this, with obvious extensions for other properties - but note that cr/nl handling leaves a lot to be desired: --8<---------------cut here---------------start------------->8--- import csv reader = csv.reader(open("foo.csv", "rb")) titles = reader.next() for row in reader: print "* %s\n:PROPERTIES:\n:%s:\t%s\n:END:\n\n%s\n" % (row[0], titles[1], row[1], row[15]) --8<---------------cut here---------------end--------------->8--- Output: ,---- | * some name something | :PROPERTIES: | :&W: 823-2323 | :END: | | | | * bob and sylvia | whosit | :PROPERTIES: | :&W: | :END: | | friend | sss\r\nwwwww\r\nzsdddddd\r\nwwww\r\n | `---- (This is python 2.6 btw - things are different in python 3). HTH, Nick ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-22 23:31 ` Nick Dokos @ 2011-11-23 1:16 ` Samuel Wales 2011-11-23 1:19 ` Samuel Wales 2011-11-23 5:37 ` Nick Dokos 0 siblings, 2 replies; 7+ messages in thread From: Samuel Wales @ 2011-11-23 1:16 UTC (permalink / raw) To: nicholas.dokos; +Cc: emacs-orgmode Hmm, thanks for your comments. I can see the appeal of a Python-ish solution, but I was thinking maybe some elisp (or even a package or a part of Org) instead. Then it could grow to a generally useful importer. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-23 1:16 ` Samuel Wales @ 2011-11-23 1:19 ` Samuel Wales 2011-11-23 5:37 ` Nick Dokos 1 sibling, 0 replies; 7+ messages in thread From: Samuel Wales @ 2011-11-23 1:19 UTC (permalink / raw) To: nicholas.dokos; +Cc: emacs-orgmode Hi Nick, Thanks for your comments. I can see the appeal of an external tool, but I was thinking maybe some elisp (or even a package or a part of Org) could do it instead. Then it could maybe even grow to become a generally useful importer. I am useless at Python. Samuel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-23 1:16 ` Samuel Wales 2011-11-23 1:19 ` Samuel Wales @ 2011-11-23 5:37 ` Nick Dokos 1 sibling, 0 replies; 7+ messages in thread From: Nick Dokos @ 2011-11-23 5:37 UTC (permalink / raw) To: Samuel Wales; +Cc: nicholas.dokos, emacs-orgmode Samuel Wales <samologist@gmail.com> wrote: > Hmm, thanks for your comments. I can see the appeal of a Python-ish > solution, but I was thinking maybe some elisp (or even a package or a > part of Org) instead. Then it could grow to a generally useful > importer. > The trouble is that CSV is a very loosely defined format, with many variations and dialects. The nice thing about the python solution is that it takes care of many of these variations. If somebody does take up your challenge, I would strongly advise that they should consult the csv python module (or equivalent modules in other languages, depending on their preferred language) and the design document for it (PEP 305 - at http://www.python.org/dev/peps/pep-0305/ ) and try to translate it into elisp, rather than striking off on their own. Nick ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-22 22:56 [OT] CSV to Org Samuel Wales 2011-11-22 23:31 ` Nick Dokos @ 2011-11-30 12:13 ` Eric S Fraga 2011-11-30 16:30 ` Eric Schulte 1 sibling, 1 reply; 7+ messages in thread From: Eric S Fraga @ 2011-11-30 12:13 UTC (permalink / raw) To: Samuel Wales; +Cc: emacs-orgmode Samuel Wales <samologist@gmail.com> writes: > I have an old CSV that looks like this. I'd like to convert > it to Org format. I've used csv-mode in the past for this but I cannot do this now as there is some bug in csv-mode that is causing problems with, of all things, my mode-line-format... sigh. Anyway, check out that mode in case it gives you enough to then import the result as an org table. HTH, eric -- : Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) in Emacs 24.0.90.1 : using Org-mode version 7.7 (release_7.7.381.g05ea.dirty) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OT] CSV to Org 2011-11-30 12:13 ` Eric S Fraga @ 2011-11-30 16:30 ` Eric Schulte 0 siblings, 0 replies; 7+ messages in thread From: Eric Schulte @ 2011-11-30 16:30 UTC (permalink / raw) To: Samuel Wales; +Cc: emacs-orgmode I'm coming to this thread late, so forgive me if this has already been mentioned, but `org-table-import' always works for me. Best, -- Eric Schulte http://cs.unm.edu/~eschulte/ ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-11-30 16:31 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-11-22 22:56 [OT] CSV to Org Samuel Wales 2011-11-22 23:31 ` Nick Dokos 2011-11-23 1:16 ` Samuel Wales 2011-11-23 1:19 ` Samuel Wales 2011-11-23 5:37 ` Nick Dokos 2011-11-30 12:13 ` Eric S Fraga 2011-11-30 16:30 ` Eric Schulte
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).