Как отфильтровать столбец в CSV по части строки и сохранить его в Excel - PullRequest
0 голосов
/ 03 октября 2019

У меня есть tar-файлы в папке, в которой есть CSV и нет заголовков. Мне нужно распаковать / разархивировать эти файлы в папке, извлечь все файлы CSV, а затем отфильтровать столбец № 12 с определенной строкой «INCM», а затем сохранить его в новом Excel.

Я мог бы извлечь один файл tar и отфильтровать данные в CSV. Но мне не удается кое-где повторить один и тот же цикл в задачах Untar и Filter. Благодаря этому я могу распаковать / разархивировать один файл в этой папке, но не могу сделать то же самое для других файлов в этой папке и добавить данные в Excel. Кроме того, я застрял, как сохранить данные в Excel, так как мои входные данные из CSV.

import tarfile
import os
import csv

workdir = 'C:/Rajhesh/Python Exercise/OSLA/'
datadir = workdir + 'Input/'
os.chdir(datadir)
files = os.listdir(datadir)

for fname in files:
    if (fname.endswith("tar.gz")):
        tar = tarfile.open(fname, "r:gz")
        tar.extractall()
        tar.close()
    elif (fname.endswith("tar")):
        tar = tarfile.open(fname, "r:")
        tar.extractall()
        tar.close()
    column_nbr = 12
    keep = []
    with open(fname, 'r') as my_file:
        reader = csv.reader(my_file)
        for row in reader:
            print(row)
            IM = row[column_nbr]
            if "INCM" in IM:
                keep.append(row)
    with open('filtered.csv', 'w') as f:
        writer = csv.writer(f)
        writer.writerows(keep)

1 Ответ

0 голосов
/ 03 октября 2019

Это будет работать для написания листа Excel:

import xlsxwriter

    workbook = xlsxwriter.Workbook('test.xlsx')
    worksheet = workbook.add_worksheet()

    row = 0
    column = 0

    keep = []

    for line in keep:
        line = line.split(',')  # convert each row as a list
        for cell in line: 
            worksheet.write(row, column, cell)
            column += 1  # for moving to the next cell 
        row += 1  # for moving to the next row

    workbook.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...