Re: Sort Multidimensional Array by Column 5
Re: Sort Multidimensional Array by Column 5
- Subject: Re: Sort Multidimensional Array by Column 5
- From: Doug McNutt <email@hidden>
- Date: Tue, 5 Oct 2010 10:33:56 -0600
At 16:29 +0100 10/5/10, Richard Lake wrote:
I am returning to an old issue from this summer that never got resolved, it involves reading a .csv file into an array, sorting the array by a column and then writing the array back to disc. The input and output delimited must be retained always.
I require a simple routine that can be called at will which will sort Column 5 in descending order. This column can also contain nothing but empty quotes.
Sometime ago I was a given a solution that involved the use of unix commands Head, Tail, Tr and Sort. This refused to work no matter what I tried. For starters -n argument of Head wouldn't work I had to use -c bytenumber instead, but the list never got sorted anyway!
Column Headings and example of how CSV file is stored.
"Customer GUID","Form GUID","Contact GUID","Form Type","Ref No","Account Number","Company Name","Contact Name","Contact Address","Email address","Artwork awaiting Response","Days no Response","Special Pricing","Date"
"17F1098A-482E-4BCB-BC17-B56094FF7CC1","ADB3CC97-0A42-40FF-9C63-10AB043A0F7E","66864065-0256-41E3-AFCF-CC7053DAD196","PF","","S0154C","Synectic Systems Group Ltd","A Name","","email@address","Yes","2","No",""
"43C79C66-2127-41B9-B444-34EAB49DEB68","7AF809BA-10F9-4997-858D-DF3ACE829BC0","ED9FF7CF-ECF0-4D2D-BAB9-687B4AEEF109","QT","2940","M0012C","Manchester Metropolitan University[] The","A Name","An Address[]2nd Line[]3rd Line[]Etc[]","email@address","No","1","No",""
"41A9C623-3E6E-44E1-81D6-FC5B57FCC7D8","4625DC32-B013-42CC-BFD4-73962A3106F4","1D54FDFE-731E-4B85-BD7B-416A7B05AA90","SO","3110","C0250C","Chem-dry (uk) Ltd","A Name","An Address[]2nd Line[]3rd Line[]Etc[]","email@address","Yes","2","No",""
The array retains its data in this fashion and I have no plans to change this behaviour as its used countless times as part of a much wider application.
set formData to {{"7C925871-2545-458E-9E1A-F3362F5010BE", "CFB29657-ABBA-4AAC-83CF-F436D1AFE3BE", "2ADC20E6-6AB3-4FD9-B137-BAD34D1B580D", "QT", "2942", "C0067C", "Conocophillips", "A Name", "An Address[]2nd Line[]3rd Line[]Etc[]", "email@address", "No", "1", "No", ""}, {"7C925871-2545-458E-9E1A-F3362F5010BE", "97A6977D-B0F4-480B-ACA5-9977E7307996", "2CAC23D0-AEF7-4194-AD1C-201B053298A0", "SO", "3111", "C0067C", "Conocophillips", "A Name", "An Address[]2nd Line[]3rd Line[]Etc[]", "aemail@address", "No", "1", "No", ""}, {"059B2178-D55B-4542-A794-0B4079F6B007", "C6484FD1-989C-4DA5-8AF8-161769BB1146", "5734F334-2851-496A-82D0-B6A7658ACA53", "SO", "3112", "B0063C", "Exova", "A Name", "An Address[]2nd Line[]3rd Line[]Etc[]", "email@address", "Yes", "1", "Yes", ""}}
----
If anyone can offer a working solution I'd like to hear it.
I have some perl scripts that work with csv. They're mostly used for working with the likes of csv downloads returned by banks and Yahoo stock tickers. Sorting is easy and handling the two dimensioned array you're talking about is simplified by perl's hashes. The destination is usually a spreadsheet. <ftp://ftp.macnauchtan.com/Excel/yahooquote.pl> is an example.
CSV is a curious format and it is in no way a universal standard. Your examples show every entry quoted. Is it really known to be that way all of the time? Much software just quotes when necessary as for a comma inside of a data item. I see no commas inside of data items in your examples. Is that enforced? or can it happen? I see also some little rectangles in the font that are likely embedded line ends that have been converted to some special ASCII control character (< dec 32). They may require special attention. Are there others that don't show - yet? Like a quote mark? The curly braces added for the return format are easy to add in perl but are they forbidden within the data? The quoted blank at the very end of the returned line; Does that mean that every line of CSV is required to have the same number of items? Does that number ever change in the input data?
In any case, perl provides a whole lot more control than Tr and sort. You might be able to use those commands with very little modification in perl.
Ask off line using dmcnutt@same if you'd like to pursue a perl track.
--
Applescript syntax is like English spelling:
Roughly, though not thoroughly, thought through.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden