从一个CSV读取数据并将解析后的数据显示到另一个CSV文件

时间:2017-08-10 01:14:08

标签: python

我是Python的新手。我正在尝试读取csv文件并将结果显示到另一个CSV文件。我想要做的是我想在输入csv文件中将选择行写入输出文件。下面是我到目前为止编写的代码。此代码读取输入文件中的每一行,即1.csv,并将其写入输出文件out.csv。我如何调整此代码,例如,我希望我的输出文件只包含那些以第8列中的READ开头的行和第10列中不等于0000的行。这两个条件都需要满足。就像从READ开始并且不等于0000.我想写所有这些行。此代码块也适用于单个csv文件。任何人都可以告诉我如何说10000 csv文件?此外,当我执行代码时,我可以看到我的csv上的行之间的空格。如何删除这些空格?

import csv
f1 = open("1.csv", "r")
reader = csv.reader(f1)
header = reader.next()
f2 = open("out.csv", "w")
writer = csv.writer(f2)
writer.writerow(header)
for row in reader:
    writer.writerow(row)
f1.close()
f2.close()

1 个答案:

答案 0 :(得分:0)

类似的东西:

import os
import csv
import glob

class CSVReadWriter(object):

    def munge(self, filename, suffix):
        name,ext = os.path.split(filename)
        return '{0}{1}.{2}'.format(name, suffix, ext)

    def is_valid(self, row):
        return row[8] == 'READ' and row[10] == '0000'

    def filter_csv(fin, fout):
        reader = csv.reader(fin)
        writer = csv.writer(fout)

        writer.write(reader.next())  # header
        for row in reader:
            if self.is_valid(row):
                writer.writerow(row)

    def read_write(self, iname, suffix):
        with open(iname, 'rb') as fin:
            oname = self.munge(filename, suffix)
            with open(oname, 'wb') as fout:
                self.filter_csv(fin, fout)

work_directory = r"C:\Temp\Data"

for filename in glob.glob(work_directory):
    csvrw = CSVReadWriter()
    csvrw.read_write(filename, '_out')

我已经把它变成了一个类,所以你可以超越mungeis_valid方法来适应不同的情况。作为一个类也意味着你可以更好地存储状态,例如,如果你想在某些标准之间输出行。

您提到的行之间的额外空格与\r\n回车符和换行符行结尾有关。将open'wb'一起使用可能会解决问题。