用Python在同一行中提取三种信息

2024-04-26 18:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个短脚本,用Python从一个长文本文件中提取某些数据。这是密码。你知道吗

fname = raw_input("Enter file name: ")
if ( len(fname) < 1 ) : fname = 'test.v2'
rdf = open(fname)

import re
totalmoney = 0
totallent = 0
totaldebt = 0

for line in rdf:
    line = line.rstrip()
    money = re.findall('.*money=([0-9]*)', line)
    #lent = re.findall('.*money_lent=([0-9]*)', line)
    #debt = re.findall('.*debt=([0-9]*)', line)
    try: 
        money = int(money[0])
        totalmoney = totalmoney + money
        #lent = int(lent[0])
        #totallent = totallent + lent
        #debt = int(debt[0])
        #totaldebt = totaldebt + debt
    except: continue

print 'money total:',totalmoney
#print 'lent total:',totallent
#print 'debt total:',totaldebt

如您所见,第二行和第三行有意义的数据提取器当前处于非活动状态(#),这是因为当它们处于活动状态时,会发现值为零,我知道这是不正确的,因为当我分别运行它们时,它们会发现一个实值。我怀疑由于某种原因,它不能在同一个循环中运行所有三条线路,但我不知道为什么。你知道吗

你能告诉我如何从同一行中提取三种信息吗?你知道吗

谢谢。你知道吗


Tags: 数据relinerdffnameinttotalprint
1条回答
网友
1楼 · 发布于 2024-04-26 18:38:07

吞咽异常不是一个好的做法-你可能永远也找不到事情出错的原因。最好一点也不吞并例外,把它做好。这应该管用。你知道吗

fname = raw_input("Enter file name: ")
if ( len(fname) < 1 ): 
    fname = 'test.v2'
rdf = open(fname)

import re
totalmoney = 0
totallent = 0
totaldebt = 0

for line in rdf:
    line = line.rstrip()
    money = re.search('money=([0-9]*)', line)
    lent = re.search('money_lent=([0-9]*)', line)
    debt = re.search('debt=([0-9]*)', line)

    if money:
        totalmoney = totalmoney + int(money.group(1))
    if lent:
        totallent = totallent + int(lent.group(1))
    if debt:
        totaldebt = totaldebt + int(debt.group(1))

print('money total:',totalmoney)
print('lent total:',totallent)
print('debt total:',totaldebt)

玩《维多利亚2》玩得开心-我自己也浪费了很多时间玩那个游戏:)

相关问题 更多 >