Как скомпоновать столбцы .txt файлов в один CSV файл без модуля Pandas?

У меня есть 7 файлов .txt со значениями. Значения записаны в 1 столбец. Количество строк во всех файлах одинаково. Я хочу собрать все файлы в один CSV.

Начало моего кода:

import csv    
output_file_name = "./values/values.csv"
csvfile = open(outfilename, "w")
title = "Name,Value,Target,Condition,Dimension,Description,Comments,"
csvfile.write(title)

В первую строку я записал название столбцов, именно в таком порядке должны располагаться данные.

Может кто-нибудь помочь?


Ответы (1 шт):

Автор решения: MaxU

воспользуйтесь стандартным модулем csv:

import csv

filenames = ["1.txt", "2.txt", "3.txt"]
output_file_name = "values.csv"
title = "Name,Value,Target,Condition,Dimension,Description,Comments"
sep = ","

files = [open(f) for f in filenames]

with open(output_file_name, "w") as csvfile:
    writer = csv.writer(csvfile, delimiter=sep)
    writer.writerow(title.split(sep))
    for row in zip(*files):
        writer.writerow(map(str.strip, row))

_ = [f.close() for f in files]

PS  решение с использованием модуля Pandas было бы гораздо более элегантным...


UPD: для сравнения - решение с использованием Pandas:

import pandas as pd

filenames = ["1.txt", "2.txt", "3.txt", ..., "7.txt"]
output_file_name = "values.csv"
title = "Name,Value,Target,Condition,Dimension,Description,Comments"
sep = ","

(pd.concat([pd.read_csv(f, header=None) for f in filenames], axis=1)
   .set_axis(title.split(sep), axis=1)
   .to_csv(output_file_name))
→ Ссылка