Преобразовать строку CSV в таблицу в CSV - PullRequest
0 голосов
/ 05 февраля 2020

Если у нас есть файл, содержащий csv, то мы можем прочитать его, используя 0: скажем, у нас есть файл x.csv на диске, тогда преобразовать его в таблицу легко, как показано ниже

("SFJ";enlist",")0:`:/x.csv

Но Как мы можем преобразовать строку CSV в таблицу?
строка:

"sym,px,vol
GG,10.2,100
AA,11.2,1000"

Ожидаемый результат: таблица

sym px  vol
"GG"    10.2    100
"AA"    11.2    1000

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

Строка может быть передана с использованием 0: вместо дескриптора файла, и таблица будет создана как обычно:

q)s:("sym,px,vol";"GG,10.2,100";"AA,11.2,1000")
q)s
"sym,px,vol"
"GG,10.2,100"
"AA,11.2,1000"
q)("SFJ";enlist",")0:s
sym px   vol
-------------
GG  10.2 100
AA  11.2 1000
2 голосов
/ 05 февраля 2020

Если вам нужно программно добраться до s Элиота из одной большой строки csv, есть несколько опций в зависимости от формата строки csv.

// \n delimited 
s:` vs "sym,px,vol\nGG,10.2,100\nAA,11.2,1000"

// if you know the row and col count. 
s:3 3#"," vs "sym,px,vol,GG,10.2,100,AA,11.2,1000"

// if you just know the col count
s:"sym,px,vol,GG,10.2,100,AA,11.2,1000"
f:{[str;noCol]
    str:"," vs str;   
    noRow:`long$(count str)%noCol;
    (noRow, noCol)#str
}
f[s;3] 

Все три выводят this ("sym, точек, т ";" GG, 10.2,100 "" AA, 11.2,1000" )

...