classification
Title: Add support for multi-character delimiters in csv
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.4
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: Nosy List: Ramchandra Apte, skip.montanaro, terry.reedy, tshepang
Priority: normal Keywords:

Created on 2012-06-24 03:47 by Ramchandra Apte, last changed 2013-03-09 03:31 by Ramchandra Apte. This issue is now closed.

Messages (6)
msg163708 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012-06-24 03:47
It would be nice if csv supported multi-character delimiters.
I need it for my project.
 Another person had this problem: http://stackoverflow.com/questions/6352409/how-to-use-python-csv-module-for-splitting-double-pipe-delimited-data .
msg163709 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012-06-24 03:51
BTW, conincidentally just like the stackoverflow, even I want to split double pipes
msg164440 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012-07-01 00:45
Did you read "Unfortunately, delimiter is represented by a character in C." in one of the answers? If so, this should be rejected. For the posted problem, I added the following.

>>> list(s[1:-1] for s in '"1234"||"abcd"||"a1s1"'.split('||'))
['1234', 'abcd', 'a1s1']

re.split is intended for general splitting tasks. The SO had other posted solutions that also do the job. So I do not see the need.

Using commas both within quoted fields and between fields is semi-sensible, or at least widely done. Anyway, csv was designed for that and then generalized. I do not see the need to cater to something as foolish and rare as using a multichar delimiter that is also within fields.

I suggest you post enhancement ideas on python-ideas first, as it is a better place for discussion and reaches more people.
msg171947 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012-10-04 14:02
> I do not see the need to cater to something as foolish and rare as using a multichar delimiter that is also within fields.
I need to generate tables for Google Code wikis.
msg183766 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2013-03-08 21:44
You did not explain why it is *impossible* for you to use any of the other solutions. In any case, I looked at the C code. It defines delimiter (as well as quotechar and escapechar) as a single unicode char. This is different from Python which does not have a char type but uses strings (arrays) of length one as a substitute. Redefining delimiter as an array of unicode chars, as you propose, would complicate the code. It will take a much stronger case than one person's 'It would be nice' to motivate someone with the needed C skills to do the revision. It would as least slightly slow down all single char uses. It would be easier and more useful, in some ways, to write a Python csv version.

You might look elsewhere for an enhanced csv reader that handles multi-char delimiters. Searching just pypi for 'csv' returns perhaps 50 hits. If you really want to pursue this for the stdlib, follow my suggestion of posting to python-ideas and reference this issue.
msg183788 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2013-03-09 03:31
I have posted on python-ideas.

On 9 March 2013 03:14, Terry J. Reedy <report@bugs.python.org> wrote:

>
> Terry J. Reedy added the comment:
>
> You did not explain why it is *impossible* for you to use any of the other
> solutions. In any case, I looked at the C code. It defines delimiter (as
> well as quotechar and escapechar) as a single unicode char. This is
> different from Python which does not have a char type but uses strings
> (arrays) of length one as a substitute. Redefining delimiter as an array of
> unicode chars, as you propose, would complicate the code. It will take a
> much stronger case than one person's 'It would be nice' to motivate someone
> with the needed C skills to do the revision. It would as least slightly
> slow down all single char uses. It would be easier and more useful, in some
> ways, to write a Python csv version.
>
> You might look elsewhere for an enhanced csv reader that handles
> multi-char delimiters. Searching just pypi for 'csv' returns perhaps 50
> hits. If you really want to pursue this for the stdlib, follow my
> suggestion of posting to python-ideas and reference this issue.
>
> ----------
> nosy: +skip.montanaro
> resolution:  -> rejected
> stage: test needed -> committed/rejected
> status: open -> closed
>
> _______________________________________
> Python tracker <report@bugs.python.org>
> <http://bugs.python.org/issue15158>
> _______________________________________
>
History
Date User Action Args
2013-03-09 03:31:36Ramchandra Aptesetmessages: + msg183788
2013-03-08 21:44:32terry.reedysetstatus: open -> closed

nosy: + skip.montanaro
messages: + msg183766

resolution: rejected
stage: test needed -> resolved
2012-10-04 14:02:09Ramchandra Aptesetmessages: + msg171947
2012-07-01 00:45:03terry.reedysetversions: - Python 3.3
nosy: + terry.reedy

messages: + msg164440

stage: test needed
2012-06-29 18:52:10tshepangsetnosy: + tshepang
2012-06-24 03:51:23Ramchandra Aptesetmessages: + msg163709
2012-06-24 03:47:25Ramchandra Aptecreate