Python 如何读取和合并两个CSV文件
给定2个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
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)