2013-02-18 83 views
2

我一直在为此寻找一段时间,并找不到解决方案。我有一个CSV例如下面的数据:如何将CSV转换为多个列表(applescript)?

1,2,3,a,b,c,4,5,6,d,e,f,7,8,9,0
0, 9,8,g,h,i,7,6,4,k,l,m,5,4,3,2
etc ...

每行包含大多数不同的数据,是真的还是假的。

我需要的是将每一行都拉为一个列表,然后才能够解析数据。

我希望能够从所有列表中删除例如项目编号3,然后保存要在电子表格中使用的数据。

请注意,我对applescript比较陌生,所以仍然试图让我的手指,它买了一本书,似乎很多网站上强烈推荐,但它尚未交付! :-)

此外,如果你知道这样做不同/更好的方式,那么我会很乐意尝试。

此刻,我有以下几点:

块引用 - 设置变量
集LF以ASCII字符10
- 选择文件
集PROMPT1“请找到您的设备CSV文件...“
将csvDevices设置为”testfile.csv“
- 将csvDevices设置为(选择提示prompt1的文件)
- 将文件读取到内存
个 集csvLines阅读csvDevices
集的AppleScript的文本项分隔符{LF}
集csvEntries到csvLines的段落
集的AppleScript的文本项分隔符{ “”}
- 过滤垃圾
集csvNoTitle到csvEntries的休息 - 删除标题行
集lineCount之后,我能够打印出内容来算csvNoTitle

,但它会给我

{“1,2,3,a,b,c,4,5,6,d,e,f,7,8,9,0”,“0.9,8,g,h,我,7,6,4,K,L,M,5,4,3,2" , “等等”}

,而不是我想什么

{ “1”,” 2" , “3”, “一”, “b”, “C”, “4”, “5”, “6”, “d”, “E”, “F”, “7”, “8” ,“9”,“0”}
{“0”,“9”,“8”,“g”,“h”,“i”,“7”,“6”,“4”,“k “,”l“,”m“,”5“,”4“,”3“,”2“}
{”etc ...“}

顺便说一下,脚本,因为它是一个没有实际有用数据的描述行,或者对我来说不是。

感谢所有帮助

+0

[This MacScripter post](http://macscripter.net/viewtopic.php?id=19676#p72212)应该让你开始吧 – fanaugen 2013-02-18 13:30:17

+0

@fanaugen我曾经看到过,但无法解决逻辑问题。 – Tcbil 2013-02-18 16:06:28

回答

2

你应该打破文本CSV文件导入记录(单线),然后打破每个记录到的值(用逗号分隔)。您可以从您将CSV文本文件转换为字符串(csvLines)的方式继续。

-- getting records (you don't need to set applescript's text item delimiters here) 
set recs to paragraphs of csvLines 

-- getting values for each record 
set vals to {} 
set applescript's text item delimiters to "," 
repeat with i from 1 to length of recs 
    set end of vals to text items of (item i of recs) 
end repeat 

-- this is true 
(item 1 of vals) = {"1","2","3","a","b","c","4","5","6","d","e","f","7","8","9","0"} 

这将解析整个文件而不进行过滤。但只是想给出正确的CSV解析的想法。您已经知道如何过滤数据。

+0

:-)顺便说一句:通常是一个很好的做法,当你用一个不同的分隔符完成分割字符串时,将applescript的文本项目分隔符恢复为“”。 – Paolo 2013-02-18 16:19:21

+0

还要感谢最后一条信息,我已将其应用于我的代码中。我提交了另一个查询,如果你能够协助,http://stackoverflow.com/questions/14963605/how-to-read-modify-remove-items-lists-contained-in-a-list-in-苹果感谢 – Tcbil 2013-02-19 17:24:21