Quick & Dirty concept code.
(defun _TSV->List ( tsvfilename / foo i handle s result )
(defun foo ( s / result )
(while (setq i (vl-string-position 9 s nil t))
(setq
result (cons (substr s (+ 2 i)) result)
s (substr s 1 i)
)
)
(cons s result)
)
(if (setq handle (open tsvfilename "r"))
(progn
(while (setq s (read-line handle))
(setq result (cons (foo s) result))
)
(close handle)
(vl-remove 'nil (reverse result))
)
)
)
(defun _List->CSV ( lst tsvfilename / handle )
(if (setq handle (open tsvfilename "w"))
(progn
(foreach r lst
(princ (car r) handle)
(foreach x (cdr r) (princ "," handle) (princ x handle))
(princ "\n" handle)
)
(null (close handle))
)
)
)
;; read it in
(setq lst (_TSV->List "c:\\docs\\tsv.txt"))
;; abuse it
(setq alt (mapcar (function (lambda (r) (reverse (mapcar 'set '(x y) (cdr r))))) lst))
;; write it out
(_List->CSV alt "c:\\docs\\csv_abused.txt")
;; orig
0 318349.74 4231547.73
1 318445.61 4231568.79
2 318446.37 4231561.59
3 318443.36 4231549.82
4 318438.82 4231539.87
5 318428.56 4231532.33
...
;; abused
4231547.73,318349.74
4231568.79,318445.61
4231561.59,318446.37
4231549.82,318443.36
4231539.87,318438.82
...
/2¢