Добавление новых “столбцов” к csv файлу данных в Tcl

Я имею дело с "большими" измерительными данными, приблизительно 30K пары "ключ-значение". Измерения имеют количество повторений. После каждого повторения создается файл данных (non-csv) с парами kay-значения 30K. Я хочу так или иначе создать файл CSV формы:

Key1,value of iteration1,value of iteration2,...
Key2,value of iteration1,value of iteration2,...
Key2,value of iteration1,value of iteration2,...
...

Теперь, я задавался вопросом об эффективном способе добавить каждое повторение mesurement данные как столбцы к файлу CSV в Tcl. Так, далеко кажется, что в любом случае я должен буду загрузить целый файл CSV в некоторую переменную (массив/список) и работа над каждым элементом путем добавления новых измерительных данных. Это кажется несколько неэффективным. Есть ли иначе, возможно?

1
задан George 5 May 2010 в 12:12
поделиться

1 ответ

Поскольку файлы CSV в основном являются текстовыми файлами, вам необходимо загрузить все данные и записать их. опять таки. Другого способа увеличить количество столбцов нет, поскольку данные в основном являются строковыми. Самый простой способ сделать то, что вы говорите, что хотите (в конце концов, 30k-пар - это не , а много) - использовать csv-пакет для выполнения работы по синтаксическому анализу. Этот код может делать то, что вы ищете…

package require csv
package require struct::matrix

# Load the file into a matrix
struct::matrix data
set f [open mydata.csv]
csv::read2matrix $f data , auto
close $f

# Add your data
set newResults {}
foreach key [data get column 0] {
    lappend newResults [computeFrom $key]; # This is your bit!
}
data add column $newResults

# Write back out again
set f [open mydata.csv w]
csv::writematrix data $f
close $f

Возможно, вам лучше использовать базу данных. Оба metakit и sqlite3 очень хорошо работают с Tcl и хорошо справляются с задачами такого рода.

2
ответ дан 3 September 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: