5

CSV ファイルを 2D 配列として読み込み、それを CSV ファイルに戻したいと考えています。これが私のCSVファイルだとしましょう。それはExcelファイルであり、| 隣接するセルを意味します:

family | type
Doctor | Pediatrics
Engineer | Chemical

私が理解していることから、applescriptには配列はなく、リストとレコードだけです。これを XLSX ファイルで行う方がよい場合は、お知らせください。

4

3 に答える 3

7

Nigel の CSV からリストへのコンバーターは、私が見た中で最高のものです ...

http://macscripter.net/viewtopic.php?pid=125444#p125444

たとえば、次の設定を使用します。

set csvText to "family | type
Doctor | Pediatrics
Engineer | Chemical"
csvToList(csvText, {separator:"|"}, {trimming:true})

v2

set csvText to read "/Users/user1385816/Desktop/yourfile.csv"
csvToList(csvText, {}, {trimming:true})
于 2012-05-13T04:13:58.400 に答える
4

配列はapplescriptの単なるリストであるため、2次元配列またはapplescript-speakのリストのリストが必要です。AppleScript のテキスト項目区切り文字を理解していれば、タスクは文字列をリストに、またはその逆に変換する単純な操作です。そこで、タスクを簡単にするためにいくつかのハンドラーを書きました。textToTwoDArray() および twoDArrayToText()。この最初の例は、textToTwoDArray() を使用して文字列をリストのリストに変換する方法を示しています。

注: テキスト ファイルの行末はキャリッジ リターン (文字 ID 13) またはライン フィード (文字 ID 10) のいずれかである可能性があるため、注意が必要です。コードで文字 ID 10 を使用したことがわかりますが、適切な結果が得られない場合は、「13」を試してください。

set fileText to "family | type
Doctor | Pediatrics
Engineer | Chemical"

textToTwoDArray(fileText, character id 10, " | ")

on textToTwoDArray(theText, mainDelimiter, secondaryDelimiter)
    set {tids, text item delimiters} to {text item delimiters, mainDelimiter}
    set firstArray to text items of theText
    set text item delimiters to secondaryDelimiter
    set twoDArray to {}
    repeat with anItem in firstArray
        set end of twoDArray to text items of anItem
    end repeat
    set text item delimiters to tids
    return twoDArray
end textToTwoDArray

また、twoDArrayToText() を使用して、リストのリストを文字列に変換する方法を次に示します。

set twoDArray to {{"family", "type"}, {"Doctor", "Pediatrics"}, {"Engineer", "Chemical"}}

twoDArrayToText(twoDArray, character id 10, " | ")

on twoDArrayToText(theArray, mainDelimiter, secondaryDelimiter)
    set {tids, text item delimiters} to {text item delimiters, secondaryDelimiter}
    set t to ""
    repeat with anItem in theArray
        set t to t & (anItem as text) & mainDelimiter
    end repeat
    set text item delimiters to tids
    return (text 1 thru -2 of t)
end twoDArrayToText

あとは、applescript を使用してテキスト ファイルを読み書きする方法を理解するだけです。幸運を ;)

于 2012-05-12T23:45:42.990 に答える
0

AppleScript で CSV データをモデル化するだけの質問であれば、解決策は次のようなレコードのリストを使用することです。

set csvData to {{family:"Doctor", type:"Engineer"}, {family:"Engineer", type:"Chemical"}}

repeat with aRow in csvDataその後、ループ内で再度読み取ることができます。

テクニカル ノート: AppleScript リストはベクトルとして実装されます。つまり、リストは順序付けられており、数値インデックス (インデックス 1 から始まる) によってアクセスできます。他のほとんどの言語の配列と同じように動作します。

于 2012-05-12T22:52:20.347 に答える