2012-02-23 37 views
-1

即時通訊讓我的Python代碼讀取文本文件並將所有貨幣值加在一起時遇到問題。代碼似乎在我的電腦上工作正常,但只要我將文件傳輸到我的Mac,它給了我一大堆的錯誤。這裏是代碼從文本文件中獲取所有currecny值

#!usr/bin/python 
import sys 

def findnum(x): 
    list = x.split(' ') 
    index = 0 
    listindex = -1 
    numlist = [] 
    sum = 0 

    for w in list: 
     if ((w.strip('. n,')).isalpha() != True and w[0].isalpha() != True and w[-2].isdigit() == True): 
      numlist.append(w) 
      listindex += 1 

    while listindex >= 0: 
     sum += float(numlist[listindex].strip('$ n.')) 
     listindex -= 1 
    return sum 
def main(): 
    text = open(sys.argv[1]) 
    x = text.readline() 
    sum = 0 
    if len(x) > 0: 
     findnum(x) 
     while len(x) > 0: 
      sum += findnum(x) 
      x = text.readline() 
    print '{0:.2f}'.format(sum) 

if __name__ == '__main__': 
    main() 

這裏是文本 這是從ACME材料 公司發票。你收到50磅的沙子,花費40美元,費用爲 。我們交付的磚是75公斤的75.5 。另外,我們以200美元交付了30碼 草皮。運費是$ 35。

所以我需要添加40 + 70.5 + 200 +35 我一直在索引超出範圍錯誤.. 任何人都認爲他們可以幫助我嗎?

+0

您的PC和Mac是否運行相同的版本?另外,我們可以看到回溯?另外,您是否閱讀過sys.argv的文檔? – 2012-02-23 00:49:30

+0

你的錯誤是什麼,它是否給你一條失敗的路線? – 2012-02-23 00:55:45

+0

回溯(最近最後調用): 文件 「matt.py」,線路33,在 主() 文件 「matt.py」,第28行,在主 總和+ = findnum(X) 文件「如果((w.strip('。n,'))。isalpha()!= True並且w [0] .isalpha()!= True並且w [-2],則在findnum 中的'matt.py' .isdigit()== True): IndexError:字符串索引超出範圍 – matture 2012-02-23 00:59:55

回答

3
import re 
print re.findall('(\$\d+(?:\.\d{2})?)', x)