【问题标题】:How to convert hyphenated weights to pounds in csv [closed]如何在csv中将连字符的重量转换为磅[关闭]
【发布时间】:2013-11-05 18:29:02
【问题描述】:

我有一个类似于以下内容的 csv:

示例数据

data,data,8-10,data,data
data,data,9-06,data,data
data,data,10-00,data,data
data,data,14-10,data,data
data,data,12-10,data,data
data,data,8-11,data,data
data,data,16-10,data,data
data,data,20-10,data,data
data,data,18-10,data,data

我需要对该重量的两个部分进行计算,以将其转换为磅数。

例如对于第 1 行,我需要输出 (8 * 14) + 10。但是我不知道如何捕获此权重的两侧以执行所述计算。

想要的输出:

data,data,8-10,data,data,122
data,data,9-06,data,data,132
data,data,10-00,data,data,140
data,data,14-10,data,data,206
data,data,12-10,data,data,178
data,data,8-11,data,data,123
data,data,16-10,data,data,234
data,data,20-10,data,data,290
data,data,18-10,data,data,262

【问题讨论】:

  • 查看 Python 的String.split method
  • 出于好奇,这两个量是多少?我问是因为(8 * 14) + 10 似乎是一个将重量转换为磅的奇怪计算。
  • 是吗?通过执行精确计算(8 * 14) + 10 :) 将 8-10 均值表示的 8 石 10 磅转换为磅?
  • 他使用的是石头和磅,而不是磅和盎司。一块石头是 14 磅,所以......等等。

标签: python python-2.7 csv append


【解决方案1】:

使用csv 库和列表推导,您可以获得数据:

import csv

with open('sample.csv') as f:
   c = [r for r in csv.reader(f, delimiter=',')]
    data = [
        item[0] * 14 + item[1] for item in
            [map(int, row[2].split('-', 1)) for row in c]
    ]

    print data

输出:

[122, 132, 140, 206, 178, 123, 234, 290, 262]

以下代码,可以为你将所有数据写入一个新的:

import csv

with open('sample.csv') as f:
    with open('new_file.txt', 'w') as w:
        c = [r for r in csv.reader(f, delimiter=',')]
        data = [
            item[0] * 14 + item[1] for item in
                [map(int, row[2].split('-', 1)) for row in c]
        ]
        for line, d in zip(c, data):
            for l in line:
                w.writelines(str(l) + ',')
            w.writelines(str(d))
            w.writelines('\n')

【讨论】:

  • 显然这个问题被标记为离题,谢谢你的回答:)我将从这段代码中对****进行逆向工程:)
【解决方案2】:

csv 模块以字符串形式提供给您;只需使用str.split() 拆分破折号上的列,然后映射到int()

val1, val2 = map(int, row[2].split('-', 1))

现在您有两个整数值可供计算:

>>> example = '8-10'
>>> map(int, example.split('-', 1))
[8, 10]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2019-11-02
    • 2020-10-16
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多