2014-09-02 27 views
0

我運行我的代碼線49當收到這個錯誤,在total_energy last_digit + = INT(DIG)INT ValueError異常:「無效字面用於與底座10

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 

I:對於int()與底座10無效字面我也嘗試過浮動,但同樣的錯誤。 http://pastebin.com/1UpzeAgD這是代碼正在處理的數據。 任何幫助將是偉大的!

+0

您試圖將int轉換爲非int字符串。例如,如果您嘗試執行int('a')',那麼您將得到錯誤「無效的基數爲10的int」。檢查your_digits並打印它們。 – levi 2014-09-02 01:38:57

+0

提示:當您嘗試將空字符串轉換爲具有int(「」)「的整數時會發生什麼? – 2014-09-02 01:39:33

+0

你應該使用'csv'模塊來解析*逗號分隔值的文件*;) – 2014-09-02 01:39:39

回答

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 

當您嘗試解析線90與int('')遇到此錯誤。正如您所看到的,第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 

告訴我,如果它的工作原理。

+0

現在不會在第51行發生錯誤。 – user3491814 2014-09-02 02:16:23

+0

@ user3491814你能告訴我這次是什麼樣的錯誤嗎?一樣? – 2014-09-02 02:19:36

+0

你是同一行51,total_energy last_digit + = int(dig) ValueError:無效文字爲int()與基數10:'' – user3491814 2014-09-02 02:21:58

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 
相關問題