首页 > 解决方案 > 如何从 .csv 读取并写入对其他 .csv 的修改?

问题描述

我正在尝试编写一个脚本来使用以下代码更新几个巨大的 .csv 文件:

import csv

f = open('Book1.csv')
csv_f = csv.reader(f)

for row in csv_f:
    row[1] = row[1].split(".")[0]

找不到将更改写入单独文件 Book1_Edited.csv 的解决方案。我找到的解决方案是使用 pandas 或重写原始文件。

文件内容,如有必要:

Date, Time, Open, High, Low, Last, Volume, NumberOfTrades, BidVolume, AskVolume
2019/12/30, 14:38:01, 3233.00, 3233.00, 3230.00, 3233.00, 1, 1, 0, 1
2019/12/30, 14:38:01.1, 3233.25, 3233.00, 3230.00, 3233.25, 2, 1, 0, 2
2019/12/30, 14:43:13, 3230.00, 3230.25, 3230.00, 3230.00, 1, 1, 1, 0
2019/12/30, 15:12:47, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47.1, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47.2, 3224.50, 3225.50, 3224.50, 3224.50, 2, 1, 2, 0

感谢帮助

标签: pythoncsv

解决方案


要保留原始数据,请创建第二个文件进行保存。从旧文件修改行后,您可以重新加入行字段并将更新的行写入新文件:

import csv

f = open('Book1.csv')   # source data
f2 = open('Book1_Edited.csv','w')  # new csv
csv_f = csv.reader(f)

for row in csv_f:
    row[1] = row[1].split(".")[0]
    f2.write(','.join(row) + '\n')  # join updated fields, add newline

f.close()  # close both files
f2.close()

输出(Book1_Edited.csv):

Date, Time, Open, High, Low, Last, Volume, NumberOfTrades, BidVolume, AskVolume
2019/12/30, 14:38:01, 3233.00, 3233.00, 3230.00, 3233.00, 1, 1, 0, 1
2019/12/30, 14:38:01, 3233.25, 3233.00, 3230.00, 3233.25, 2, 1, 0, 2
2019/12/30, 14:43:13, 3230.00, 3230.25, 3230.00, 3230.00, 1, 1, 1, 0
2019/12/30, 15:12:47, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47, 3224.50, 3224.75, 3224.50, 3224.50, 2, 1, 2, 0
2019/12/30, 15:12:47, 3224.50, 3225.50, 3224.50, 3224.50, 2, 1, 2, 0

推荐阅读