If you are stuck with trying to import from CSV format, here's a function that will convert any commas within quotes to another delimiter character.

function fixQuotedItems tText
   -- first make sure that you choose an escape char
   -- not contained in your data
   repeat for each item escapeChar in "§,•,ª,∞,™,º"
      -- or whatever list of odd characters you want
      if escapeChar is in tText then next repeat
      exit repeat
   end repeat
   put empty into adjText
   set the itemdelimiter to quote
   repeat for each line tLine in tText
      put 0 into counter
      put empty into adjustedLine
      repeat for each item i in tLine
         add 1 to counter
         if counter mod 2 = 1 then
            put i after adjustedLine
         else
            put i into temp
            replace comma with escapeChar in temp
            put temp after adjustedLine
         end if
      end repeat
      if char -1 of adjustedLine = comma then delete char -1 \
                of adjustedLine
      put adjustedLine & cr after adjText
   end repeat
   if char -1 of adjText = cr then delete char -1 of adjText
   return adjText
end fixQuotedItems

this will take something like:

a,b,c,"1,2,3,4",d,e
"11,12,13",g,h,i
j,k,"22,23"

and return:

a,b,c,1§2§3§4,d,e
11§12§13,g,h,i
j,k,22§23

You can then parse your data and replace the escapeChar with comma after you're done.

-- Peter

Peter M. Brigham
pmb...@gmail.com
http://home.comcast.net/~pmbrig



On Mar 8, 2010, at 2:55 PM, Gregory Lypny wrote:

Thank you, Richmond. Good stuff. That would work here where only the first to-be item of each line is quoted because it has commas within it. But if other files have quoted items in other locations (e.g., the fifth and ninth items), it would mean first identifying which chunks are quoted before I start converting from commas to tabs.

Gregory


On Mon, Mar 8 , 2010, at 1:00 PM, Richmond Mathewson wrote:


On 08/03/2010 19:44, Gregory Lypny wrote:
Hello everyone,

I'm creating an app that imports comma-delimited tables. A few lines might look like this, where there are 14 items per line.

"Mon, Jan 18 , 2010",9:14 AM,130557,4319,Trade,Buy,X, 135,8.25,10,-82.5,1417.5,20,10 "Mon, Jan 18 , 2010",9:14 AM,130558,4371,Accept,Your ASK,X, 135,8.25,10,82.5,1582.5,0,10

My problem is that Rev treats each date in quotes as three items rather than one. I convert the comma delimiters to tab by setting the itemDelimiter to comma and then running the lines through nested repeat-for-each loops as

repeat for each line thisLine in dataTable
repeat for each item thisItem in thisLine
put thisItem&  tab after newLine
end repeat
-- more stuff here
end repeat

I end up with

"Mon       (as the first item)
Jan 18  (as the second)
2010"      (as the third)

Any suggestions as how I might get the date treated as one item?



Yes, although it is so goofily obvious you have probably thought about
this one and rejected it:

Change the commas for the bits inside the quotes to something else ( ^
*  %) - dunno, any old
thing that isn't a comma . . . :)


_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to