python - 如何从 .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
感谢帮助
解决方案
要保留原始数据,请创建第二个文件进行保存。从旧文件修改行后,您可以重新加入行字段并将更新的行写入新文件:
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
推荐阅读
- docker - Docker 添加失败,没有这样的文件或目录
- java - 单击gridview中的图像并全屏查看
- c++ - 如何调试编译器在我的 C++ 程序上崩溃的原因?
- c# - ISerializable 用于集合
- git - 如此这般的承诺是如何到达我的?
- javascript - cindyjs 如何在 2 个段点之间设置函数
- c# - 生成没有指定范围的随机数。例如。1、6、10、12 的随机数
- javascript - 如何解决 Uncaught TypeError: $(...).datepicker is not a function for yarn webpack
- python - 通过在 pandas 中使用 groupby() 的百分比从训练集中获取验证集
- java - 在 Java 中构建一个由 A 和 B 的列标签组成的新地图