Преобразуйте вложенный список в файл CSV без использования внешних пакетов

#csv #tcl

Вопрос:

У меня есть вложенный список, скажем {{1 2} {3 4} {5 6}}. Я хочу преобразовать это в файл .csv, содержащий такие данные, как,

 1 |3 |5
2 |4 |6
 

Однако я вообще не могу использовать какие-либо пакеты, такие как «csv». Как мне это сделать? Я очень новичок в TCL, поэтому не знаю, как управляются CSV без пакетов.

Комментарии:

1. foreach и. join

Ответ №1:

Если бы вы пытались произвести:

 1 |2
3 |4
5 |6
 

тогда это было бы совсем просто. Нет необходимости в пакете csv.

 foreach list $nested_list {
    puts [join $list " |"]
}
 

Однако ваша цель состоит в том, чтобы первая строка csv использовала первый индекс вложенного списка, вторая строка csv использовала второй индекс и т. Д. Я бы рекомендовал выполнять итерацию по индексу и использовать lmap в цикле.

 set nested_list {{1 2} {3 4} {5 6}}

foreach i {0 1} {
    set items_at_i [lmap l $nested_list {lindex $l $i}]
    set csv_line   [join $items_at_i " |"]
    puts $csv_line
}
 

Я не уверен, как использование csv-пакета tcllib упростит это. Есть ли какая — то операция поворота матрицы, о которой вы думаете, чтобы перейти от строк к столбцам?

Комментарии:

1. спасибо, что это сработало!

2. просто интересно, какова мотивация этого вопроса? Почему вы подумали, что с пакетом csv будет проще?

3. На странице вашей учетной записи указано, что вы работаете в Intel. Я тоже так думаю. Пришлите мне электронное письмо от компании, чтобы поздороваться.

4. вы знаете, что добавить tcl pkgs в наши системы непросто, и я всего лишь стажер, впервые занимающийся TCL.

5. кстати, как тебя зовут в разведке? Не смог найти вас в поиске по электронной почте.