python - 如何通过部分字符串过滤csv中的列并将其保存在excel中
问题描述
我在一个文件夹中有一个 tar 文件,里面有 CSV,没有标题。我需要在文件夹中解压缩/解压缩这些文件,提取所有 CSV,然后使用特定字符串“INCM”过滤第 12 列,然后将其保存在新的 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)
解决方案
这将适用于编写 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()
推荐阅读
- json - 如何使用 JSON 为 Google Cloud Storage 设置自定义元数据?
- java - 如何在java中找到实现接口的所有子类?
- mule - 我可以在不重启 Mule 的情况下重启 ActiveMQ 吗?
- excel - Trim 函数和 WorksheetFunction.Trim 不会删除前导或尾随空格
- python - 在破折号中,选择单个单选按钮时,如何使用回调更新图形?
- python - 线性回归模型(使用梯度下降)不收敛于波士顿住房数据集
- reverse-proxy - Firebase 托管是否需要反向代理?
- c - 如何像 Linux 命令 ls 一样格式化输出以打印
- html - 如何在横幅上显示文本叠加图像
- r - 在不知道变量名称的情况下将数据框重塑为三列宽