【问题标题】:How to output calculations in python?如何在python中输出计算?
【发布时间】:2014-07-10 23:53:08
【问题描述】:

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

到目前为止,我只能导入 csv 并读取它并打印它(使用打印行),但我该如何进行转换?由于数字保存在 csv 中,我是否必须将数字转换为浮点数,然后将它们写入新的 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()

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

【问题讨论】:

  • 您不需要拥有f.close()o.close()with 语句会自动为您执行此操作。

标签: python python-2.7 csv import


【解决方案1】:

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

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])

【讨论】:

    【解决方案2】:
    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] 相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多