我是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()
答案 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')
我已经把它变成了一个类,所以你可以超越munge
和is_valid
方法来适应不同的情况。作为一个类也意味着你可以更好地存储状态,例如,如果你想在某些标准之间输出行。
您提到的行之间的额外空格与\r\n
回车符和换行符行结尾有关。将open
与'wb'
一起使用可能会解决问题。