• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Sort Multidimensional Array by Column 5
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Sort Multidimensional Array by Column 5


  • Subject: Re: Sort Multidimensional Array by Column 5
  • From: Deivy Petrescu <email@hidden>
  • Date: Sat, 09 Oct 2010 12:47:02 -0400

Richard,

i did not check the other codes submitted to see if they handled any possible kinds of lists.
I am submitting a code, based on Emmanuel (of Satimage's fame) sort routine,that handles csv file outputs like the one you sbmitted

I believe I've submitted this code to the list before.
The advantage, it is fairly fast (although you can make it faster using script's list, and the code is fairly concise.



Here it is, hope it is self explanatory


<script>

set mydata to "\"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\"\r\"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\",\"\"\r\"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\",\"\"\r\"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\",\"\""
tid("\r")
set mydata to (rest of text items of mydata)
tid(",")
set decreasing to true
set mydata to sort(mydata, 5, ",", decreasing)


on sort(lista, item_Number, item_delimiter, decreasing)
	if (count of lista) < 2 then return lista
	tid(item_delimiter)
	set listalow to {}
	set listahigh to {}
	set l1 to contents of item 1 of lista
	set comp to text item item_Number of (l1 as string)
	set lista to rest of lista
	repeat with l in lista
		if text item item_Number of (l as string) < comp then
			set end of listalow to contents of l
		else
			set end of listahigh to contents of l
		end if
	end repeat
	if not decreasing then
		return sort(listalow, itemNumber, itemdelimiter, decreasing) & l1 & sort(listahigh, itemNumber, itemdelimiter, decreasing)
	else
		return sort(listahigh, itemNumber, itemdelimiter, decreasing) & l1 & sort(listalow, itemNumber, itemdelimiter, decreasing)
	end if
end sort




on tid(x)
	set AppleScript's text item delimiters to x
end tid

</script>









On Oct 5, 2010, at 11:29 AM, Richard Lake wrote:

> Hello,
>
> 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.
>
> Thanks
>
> Richard Lake
> Marketing Manager
>
> Tel: 0800 158 3898 | Email: email@hidden
>
> _______________________________________________
> 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

Deivy Petrescu
email@hidden



 _______________________________________________
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

  • Follow-Ups:
    • Re: Sort Multidimensional Array by Column 5
      • From: KOENIG Yvan <email@hidden>
References: 
 >Sort Multidimensional Array by Column 5 (From: Richard Lake <email@hidden>)

  • Prev by Date: Re: Sort Multidimensional Array by Column 5
  • Next by Date: Re: Sort Multidimensional Array by Column 5
  • Previous by thread: Re: Sort Multidimensional Array by Column 5
  • Next by thread: Re: Sort Multidimensional Array by Column 5
  • Index(es):
    • Date
    • Thread