我有一个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
发布于 2013-10-26 18:39:25
使用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')
发布于 2013-10-26 18:13:17
csv
模块为您提供字符串;只需在带有str.split()
的破折号上拆分,然后映射到int()
。
val1, val2 = map(int, row[2].split('-', 1))
现在有两个整数值要计算:
>>> example = '8-10'
>>> map(int, example.split('-', 1))
[8, 10]
https://stackoverflow.com/questions/19610144
复制相似问题