使用python或C#删除csv中的行?
我有一个csv文件,它会像这样重复:使用python或C#删除csv中的行?,python,csv,Python,Csv,我有一个csv文件,它会像这样重复: “col1”、“col2”、“col3” 整数,整数,Varchar(50) 7, 8, 21554 24, 25, 36544 “col1”、“col2”、“col3” 整数,整数,Varchar(50) 7, 8, 21554 24, 25, 36544 如何剥离重复的部分,包括后面的标题、数据类型行和数据行? 我只想要这个: “col1”、“col2”、“col3” 整数,整数,Varchar(50) 7, 8, 21554 24, 25, 3654
“col1”、“col2”、“col3”
整数,整数,Varchar(50)
7, 8, 21554
24, 25, 36544
“col1”、“col2”、“col3”
整数,整数,Varchar(50)
7, 8, 21554
24, 25, 36544
如何剥离重复的部分,包括后面的标题、数据类型行和数据行?我只想要这个:
“col1”、“col2”、“col3”
整数,整数,Varchar(50)
7, 8, 21554
24, 25, 36544
我们甚至不需要为此使用csv
模块。我们将记住文件的第一行是什么,然后写几行,直到我们再次看到它,在这一点上,我们将停止,截断文件
with open('infile.csv', newline='') as infile, open('outfile.csv', 'w+', newline='')as outfile:
first = next(infile)
outfile.write(first)
for line in infile:
if line == first:
break
outfile.write(line)
您可以使用
csv
模块(假设Python 2.x)这样做:
谢谢你,Patrick,你的代码工作起来很有魅力,除了一个小改动:当我在Python3中运行时,在“打开”之前删除第二个“with”。不客气。建议你阅读
import csv
seen = set()
with open('duplicates.csv', 'rb') as infile, open('cleaned.csv', 'wb') as outfile:
reader = csv.reader(infile, skipinitialspace=True)
writer = csv.writer(outfile)
for row in (tuple(row) for row in reader):
if row not in seen:
writer.writerow(row)
seen.add(row)
print('done')