CSV Python 问题

2 投票
3 回答
606 浏览
提问于 2025-04-16 01:52

我正在以这种方式打开一个csv文件:

import csv
reader = csv.reader(open("book1.csv", "rb"))
for row in reader:
    print row

我该如何把第三列的值替换成它的log值,然后把结果保存到一个新的csv文件里呢?

3 个回答

0

你应该使用上下文管理器的WITH语句来处理文件,这样代码会更简洁,也不需要写file.close()来关闭文件。

比如:

import csv
import math
with open('book1.csv', 'rb') as f1,open('book2.csv', 'wb') as f2:
    reader = csv.reader(f1)
    writer = csv.writer(f2)
    for row in reader:
        row[2] = str(math.log(float(row[2])))
        writer.writerow(row)
1

这些链接可能对你有帮助:

http://docs.python.org/library/csv.html#csv.writer

http://docs.python.org/tutorial/datastructures.html?highlight=array

通过 reader 返回的每一行都是一个数组。在Python中,数组是从0开始计数的(所以要访问某一行的第三个元素,你需要用 my_array[2])。

应该能帮助你前进。

4

像这样吗?

>>> input = "1,2,3\n4,5,6\n7,8,9".splitlines()
>>> reader=csv.reader(input)
>>> for row in reader:
...     row[2] = log(float(row[2]))
...     print ','.join(map(str,row))
...
1,2,1.09861228867
4,5,1.79175946923
7,8,2.19722457734

撰写回答