2015-04-01 75 views
1

我正在嘗試從文本文件中提取數據。該文件中的數據有點隨意,並且有一個數字後跟一個代碼。 (例1.25CROW,4.25CRD,10.25CR)我只想提取與#。## CR索引相關的數字。所以如果找到4.25CR 我只需要解析4.25並添加所有這些數字的總數。我已經能夠識別包含 ###.##CR的行,如下所示。我現在試圖做的是解析與CR相關的數字,並將每個事件放在一個列表 中以添加在一起,識別等。我查看了string.operands和re.match,但我無法提出解決方案。幫助將大部分 讚賞。是的,你是在寫軌道識別並從文本文件中提取數字

with open("some.txt") as f: 
    for line in f: 
     # break line to words 
     for word in line.strip().split() 
      if word.endswith("CR"): 
       try: 
        print "word %s-> %f" % (word, float(word[:-2])) 
       except: 
        print "word %s has no number" % word 

回答

0

open("some.txt").read() 
#txt ='CR' 

count = 0 
for line in open("some.txt"): 

    if 'CRD' in line: 
     pass 
    elif 'CROW' in line:  
     pass 
    elif 'CR' in line: 
     print line 
     count = count + 1 
     print 
print "Total # Count " 
print count 
+0

我忘了謝謝你們所有人。你們都很棒! – patches10 2015-07-01 13:55:13

0

您可以通過做這樣

float(line.replace('CR', '')) 
0

東西試試這個轉換那些數字。您需要修改你的最後elif塊作爲

elif 'CR' in line: 
    print line 
    count = count + 1 
    value = float(line.split('CR')[0]) 
    listOfCRs.append(value) 

有一個列表的if條款定義爲

listOfCRs = [] 

前最後打印外循環和作爲

print sum(listOfCRs) 

幾點

  • 使用with open('some.txt') as f:打開該文件,因爲它將顯式地close您的文件。