[GRASS-dev] [GRASS GIS] #2692: v.in.ascii does not handle text in qoutes
GRASS GIS
trac at osgeo.org
Tue Jun 16 09:25:41 PDT 2015
#2692: v.in.ascii does not handle text in qoutes
-------------------------+-------------------------------------------------
Reporter: wenzeslaus | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.0.1
Component: Default | Version: svn-trunk
Resolution: | Keywords: CSV, doublequote, singlequote, text
CPU: | delimiter
Unspecified | Platform: Unspecified
-------------------------+-------------------------------------------------
Comment (by glynn):
Replying to [comment:2 mlennert]:
> The attached patch seems to solve the problem for me, but it feels like
a quick fix and there probably is a better way...
Simply removing the quotes isn't sufficient to support CSV. It's necessary
to treat the field separator as a normal character when it occurs within a
quoted field (that's the point of using quotes), and also to replace two
consecutive quotes with a single quote (so that the quote character itself
can occur within a field).
For that, an explicit state machine is likely to be more legible than ad-
hoc logic.
Off the top of my head:
{{{
classes: delimiter, separator, newline, other
states: start, in_quote, after_quote, error
actions: no_op, add_char, new_field, end_record, error
start,delimiter -> in_quote,no_op
start,separator -> start,new_field
start,newline -> start,end_record
start,other -> start,add_char
in_quote,delimiter -> after_quote,no_op
in_quote,separator -> in_quote,add_char
in_quote,newline -> error,error
in_quote,other -> in_quote,add_char
after_quote,delimiter -> in_quote,add_char
after_quote,separator -> start,new_field
after_quote,newline -> start,end_record
after_quote,other -> error,error
}}}
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/2692#comment:3>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list