基数为10的int的文字无效

时间:2014-09-02 01:36:07

标签: python

运行我的代码行49时遇到此错误,在total_energy中last_digit + = int(dig)ValueError:对于带有基数10的int()的无效文字:'

def total_energy(data):
    last_digit=0
    lines= data.split('\n')

for line in lines:
    if len(line)>6:
        your_digits=line[-15:].split(',')

    for dig in your_digits:
         last_digit+=int(dig)

print last_digit

我也试过漂浮但同样的错误。 http://pastebin.com/1UpzeAgD这是代码正在处理的数据。 任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

在原始数据中:

line89: 06:28,9.1,2.3,0,0,0,0,30,0,0,89,0
line90: 06:29,9.1,2.7,0,0,0,0,0,0,0,87,0

当您尝试使用int('')解析第90行时遇到此错误。如您所见,第90行中的数据长度较短,这使得代码中的line[-15:]返回意外结果。

您必须编辑获取your_digits的方式。

试试这个:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

f = open('data_printed.txt', 'r')
data = f.read()
f.close()

last_digit=0
lines= data.split('\n')
for line in lines:
    if len(line)>6:
        your_digits=line.split(',')[-7:]  # here to get last 7 elements you want
    for dig in your_digits:
        last_digit+=int(dig)

print last_digit

告诉我它是否有效。

答案 1 :(得分:0)

import csv

answer = 0
with open('path/to/file') as infile:
    for line in csv.reader(infile, delimiter=','):
        nums = (int(i) for i in line[3:])
        answer += sum(nums)
print answer