我有一个类似于以下内容的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
答案 0 :(得分:4)
使用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]
以下代码可以将所有数据写入新的for for:
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')
答案 1 :(得分:1)
csv
模块为您提供字符串;只需使用str.split()
拆分短划线上的列,然后映射到int()
:
val1, val2 = map(int, row[2].split('-', 1))
现在您有两个要计算的整数值:
>>> example = '8-10'
>>> map(int, example.split('-', 1))
[8, 10]