2015-04-01 38 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您的文件。