我一直在为此寻找一段时间而无法找到解决方案。我有一个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
等...
除了某些字段为true或false之外,每行主要包含不同的数据。
我需要的是将每一行拉成一个列表,然后才能解析数据。
我希望能够删除所有列表中的项目编号3,然后保存要在电子表格中使用的数据。
请记住,我对Applecript相对较新,所以仍然试图抓住它,买了一本似乎在很多网站上都非常推荐的书,但还没有交付! : - )
另外,如果你知道一种不同/更好的方法,那么我很乐意尝试。
目前我有以下内容:
之后我能打印出内容,但它会给我块引用 - 设置变量
将LF设置为ASCII字符10
- 选择文件
将prompt1设置为“请找到您的设备CSV文件...” 将csvDevices设置为“testfile.csv”
- 将csvDevices设置为(选择带有提示prompt1的文件)
- 将文件读入内存
设置csvLines以读取csvDevices
将AppleScript的文本项分隔符设置为{LF}
将csvEntries设置为csvLines的段落
将AppleScript的文本项分隔符设置为{“,”}
- 过滤垃圾
将csvNoTitle设置为csvEntries的其余部分 - 删除标题行
将lineCount设置为count 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”, “一”, “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”}
{ “等...”}
顺便说一句,我删除了脚本中的第一行,因为它是一条没有实际有用数据的描述行,或者不管我是不是。
感谢您的帮助
答案 0 :(得分: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解析的想法。您已经知道如何过滤数据。