Python 如何读取和合并两个CSV文件

Python 如何读取和合并两个CSV文件,python,Python,给定2个csv文件,如下所示: S.No, Fruit , Color , Requirement 1, Apple , Green , Not Required: in june 2, Banana , Green , Not Required: in august 文件1: 文件2: 我想合并这两个文件,只获取“不需要”列表。 我的输出应如下所示: S.No, Fruit , Color , Requirement 1, Apple , Green , Not

给定2个csv文件,如下所示:

S.No, Fruit ,  Color , Requirement
1,    Apple ,  Green , Not Required: in june 
2,    Banana , Green , Not Required: in august
文件1: 文件2: 我想合并这两个文件,只获取
“不需要”
列表。
我的输出应如下所示:

S.No, Fruit ,  Color , Requirement
1,    Apple ,  Green , Not Required: in june 
2,    Banana , Green , Not Required: in august
我尝试了下面的代码片段:

import csv
input_files = ['fruit1.csv', 'fruit2.csv']
output_file = 'output.csv'
with open('fruit1.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        if "Not" in row[2]:
            print(row)
你可以试试这个

import csv

input_files= ['file_1.csv', 'file_2.csv']
output_file = 'output.csv'

for file in input_files:
    with open(file,'r', newline='') as f:
        reader = csv.reader(f)
        new_data = [row for row in reader if row != [] and 'Not' in row[3]]

with open(output_file,'w', newline='') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerow(['S.No', 'Fruit', 'Color', 'Requirement'])
    for index, row in enumerate(new_data):
        writer.writerow([index+1]+row[1:])

我想你说的“表格”是指“文件”。此外,还不清楚requires输出中的“6月不需要香蕉”和“8月不需要香蕉”来自何处。@Bart Barnard,,我编辑了内容。希望您能理解nowHi--您能使用一些代码格式化块来格式化您的代码和文件示例吗。下面是我在代码中遇到的错误:原因是什么。我在csv文件中有字符串值#new_data=[如果第[3]行中的“Not”为“Not”,则在读卡器中按行排列][索引器错误:列表索引超出范围我假设您的csv文件根据您共享的示例csv有4列(
“S.No”、“Fruit”、“Color”、“Requirement”)。。如果有3个列,则可以将其更改为
new溳data=[row for row for row in reader,如果第[2]]]
Yes my CSV文件有4列。我只是检查一下,我可以看到中间有一些空值,所以在循环中它显示错误索引超出范围。还有一件事,来自第二个文件的筛选结果正在替换来自第一个文件的输出。i、 我只得到输出中的2号S,而不是2号线。但通过过滤器循环,两个文件都得到了处理。但是在write语句中,它得到了replaceNo它没有替换任何一行..我已经编辑了一点代码,现在应该可以工作了。。
import csv

input_files= ['file_1.csv', 'file_2.csv']
output_file = 'output.csv'

for file in input_files:
    with open(file,'r', newline='') as f:
        reader = csv.reader(f)
        new_data = [row for row in reader if row != [] and 'Not' in row[3]]

with open(output_file,'w', newline='') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerow(['S.No', 'Fruit', 'Color', 'Requirement'])
    for index, row in enumerate(new_data):
        writer.writerow([index+1]+row[1:])

input_files= ['file1.csv', 'file2.csv']
output_file = 'output.csv'

with open('output.csv','w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['S.No', 'Fruit', 'Color', 'Requirement'])
    for file in input_files:
        with open(file,'r', newline='') as f1:
            reader = csv.reader(f1)
            new_data = [row for row in reader if 'Not' in row[3]]
            writer.writerows( new_data)

with open('output.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)