我有一个已发送给我的.csv文件,但各行中有多个相同值
方法 我想删除同一行中已经存在的值,并且只保留一个
技术规范: Windows 10 Python 3.6 带有600万行的CSV文件
csv文件的示例:
323|2013-06-03 00:00:00|(B)|(B)|(B)|(B)|100||Dort
323|2013-06-03 01:00:00|||||99||
323|2013-06-03 02:00:00|||||100||Dort
323|2013-06-03 03:00:00|||||97||
323|2013-06-03 04:00:00|||(B)|(B)|97||Dort
323|2013-06-03 05:00:00|||||97||
323|2013-06-03 06:00:00|||||97||
323|2013-06-03 07:00:00|||(B)|(B)|96||Dort
323|2013-06-03 08:00:00|(D)|(D)|(B)|(B)|100||Éveillé-réceptif
所需结果
323|2013-06-03 00:00:00|(B)|100||Dort
323|2013-06-03 01:00:00|||||99||
323|2013-06-03 02:00:00|||||100||Dort
323|2013-06-03 03:00:00|||||97||
323|2013-06-03 04:00:00|||(B)|97||Dort
323|2013-06-03 05:00:00|||||97||
323|2013-06-03 06:00:00|||||97||
323|2013-06-03 07:00:00|||(B)|96||Dort
323|2013-06-03 08:00:00|(D)|(B)|100||Éveillé-réceptif
答案 0 :(得分:0)
import csv
with open('data.csv') as f_in, open('data_out.csv', 'w', newline='') as f_out:
csvreader = csv.reader(f_in, delimiter='|')
csvwriter = csv.writer(f_out, delimiter='|')
for row in csvreader:
r = []
while row:
v, row = row[0], row[1:]
if v in row and len(v) > 0:
continue
r.append(v)
csvwriter.writerow(r)
输出文件中的数据:
323|2013-06-03 00:00:00|(B)|100||Dort
323|2013-06-03 01:00:00|||||99||
323|2013-06-03 02:00:00|||||100||Dort
323|2013-06-03 03:00:00|||||97||
323|2013-06-03 04:00:00|||(B)|97||Dort
323|2013-06-03 05:00:00|||||97||
323|2013-06-03 06:00:00|||||97||
323|2013-06-03 07:00:00|||(B)|96||Dort
323|2013-06-03 08:00:00|(D)|(B)|100||Éveillé-réceptif