2

我已经为此研究了一段时间,但找不到解决方案。我有一个 CSV,例如以下数据:

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
等...

除了某些为真或假的字段外,每一行都包含大部分不同的数据。

我需要的是把每一行作为一个列表,然后能够解析数据。

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

请记住,我对 AppleScript 还比较陌生,所以还在努力尝试,已经购买了一本似乎在许多网站上都强烈推荐但尚未交付的书!:-)

此外,如果您知道另一种/更好的方法,那么我很乐意尝试。

目前我有以下内容:

Blockquote -- 设置变量
将 LF 设置为 ASCII 字符 10
-- 选择您的文件
将提示 1 设置为“请找到您的设备 CSV 文件...”
将 csvDevices 设置为“testfile.csv” -- 将 csvDevices 设置
为(选择带有提示提示的文件)
-- 将文件读取到内存
设置 csvLines 以读取 csvDevices
将 AppleScript 的文本项分隔符设置为 {LF}
将 csvEntries 设置为 csvLines 的段落
将 AppleScript 的文本项分隔符设置为 {","}
-- 过滤垃圾
将 csvNoTitle 设置为 csvEntries 的其余部分 -- 删除Title Line
设置 lineCount 计数 csvNoTitle

之后我可以打印出内容,但它会给我

{"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","等..."}

而不是我想要的

{"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..."}

顺便说一句,我删除了脚本中的第一行,因为它是一个没有实际有用数据的描述行,或者无论如何对我来说都不是。

谢谢你的帮助

4

1 回答 1

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 解析的想法。您已经知道如何过滤数据。

于 2013-02-18T15:16:24.470 回答