如何在python中输出计算?

时间:2014-07-10 23:53:08

标签: python python-2.7 csv import

我有一个用6行,1列(标题和5个数字)创建的csv文件。我希望能够进行转换,例如从厘米到英寸,然后将其保存在带有新标题的新csv中。

到目前为止,我只能导入csv并读取它并打印它(使用打印行),但我该如何进行转换?由于数字保存在csv中,我是否必须将数字转换为float,然后将它们写入新的csv?我只有5个数字,因为我希望能够找出正确的代码,但我会用它来代替很多数字。

我不确定计算的位置。请帮忙!而且,这不是家庭作业等。我只是为了好玩而这样做。

这是我目前的代码:

import csv

with open('test.csv', 'rb') as f:
    reader = csv.reader(f)
    next(reader, None)   # I did this to skip the header I labelled Centimeters 

with open('test1.csv', 'wb') as o:
    writer = csv.writer(o)
    for row in reader


f.close()
o.close()

我想我不知道如何将行中的数字转换为float,然后输出值。我希望能够将行中的数字乘以0.393701,以便在新的csv中标题标记为英寸,输出位于行的下方。

2 个答案:

答案 0 :(得分:0)

import csv
float_rows=[]
with open('test.csv', 'rb') as f:
    reader = csv.reader(f)
    next(reader, None)   # I did this to skip the header I labelled Centimeters
    for row in reader:  
        comp = [ x * 0.393701 for x in map(float,row)] # do calculations and map elements to float
        float_rows.append(comp)


with open('test1.csv', 'wb') as o:
    writer = csv.writer(o)
    writer.writerows(float_rows) # write all computed data to new csv

不需要closewith会自动关闭文件。

使用map(float,iterable)[float(x) for x in my_iterable]

相同

答案 1 :(得分:0)

这应该有效,假设一个列(对于多个列,处理会有所不同,输出所有值,但一般概念是相同的):

import csv

with open('test.csv', 'rb') as f, open('test1.csv', 'wb') as o:
    reader = csv.reader(f)
    writer = csv.writer(o)

    # skip the header
    next(reader, None)

    # print the new header
    writer.writerow(['inches'])

    for row in reader:
        newVal = float(row[0]) * 0.393701
        writer.writerow([newVal])