csv python问题

时间:2010-07-26 23:20:03

标签: python csv

我打开这样的csv文件:

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

如何将第3列中的值替换为log,然后将结果保存到新的csv中?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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]

应该帮助你。

答案 2 :(得分:0)

您应该使用文件的上下文管理器 WITH 语句 - 更清晰,更少的代码,避免 file.close()语句。

e.g。

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)