Итак, я искал и нашел некоторые вещи, которые помогли мне собрать этот код, но мне не повезло с этой последней частью.Что я хочу сделать, так это прочитать файл, разделенный запятыми, разделенный пробелами или разделенный табуляцией, установить заголовки в качестве ключей и данные в качестве значений, а затем записать только определенные столбцы (количество столбцов неизвестно) в выводфайл.Пример.txt показан ниже:
col1, col2, col3, col4, col5
1, 11, 21, 31, 41
2, 12, 22, 32, 42
3, 13, 23, 33, 43
4, 14, 24, 34, 44
Итак, вот рабочий код, который у меня есть.
import csv
import sys
file = sys.argv[1] # name of file is example.txt
columns = sys.argv[2:] # order: col1, col3, col5
with open(file, 'r') as csvfile:
with open('table.out', 'w') as file_out:
file.out_write(columns[0] + '\t' + columns[1] + '\t' + columns[2] + '\n')
reader = csv.DictReader(csvfile)
for row in reader:
file_out.write(row[columns[0]] + '\t' + row[columns[1]] + '\t' + row[columns[2]] + '\n')
Результаты:
col_1 col_3 col_5
1 21 41
2 22 42
3 23 43
4 24 44
Этот код прекрасно работает, если число столбцов было фиксированным, но количество столбцов, которые нужно записать, может варьироваться.Например, иногда мне может понадобиться захватить только col1, col2, а иногда мне нужно захватить col2, col3, col4, col5 в произвольном порядке.
Итак, мой вопрос: как я могу изменить приведенный выше код так, чтобы в выходной файл можно было записать любое количество столбцов с использованием словарей в Python 3.X?