在python中使用字符串平均文本文档

时间:2012-11-16 01:15:00

标签: python

我需要制作一个表格,从文本文件中抽取一个或多个人在各种游戏中的名字和分数,然后找出每个人的分数的平均值,最小值和最大值并显示它们。

编辑 - 这是我目前的代码:

    while name!='':
    floor=text_file.readline().rstrip()
    rings=text_file.readline().rstrip()
    p_bars=text_file.readline().rstrip()
    p_horse=text_file.readline().rstrip()
    h_bar=text_file.readline().rstrip()


    floor_int=int(floor)
    rings_int=int(rings)
    p_bars_int=int(p_bars)
    p_horse_int=int(p_horse)
    h_bar_int=int(h_bar)

    score_sum=floor_int+rings_int+p_bars_int+p_horse_int+h_bar_int
    avg=score_sum/5    

我如何使用具有数字的行进行数学运算并排除具有名称的行?

编辑:运行该代码给了我这个:         TypeError:无法将'float'对象隐式转换为str

任何想法?

2 个答案:

答案 0 :(得分:1)

如果您的号码是十进制数字,您可以这样做:

if line.isdigit():
    my_number = int(line)

答案 1 :(得分:0)

假设'rings'是一个有数字的行,你可以通过创建int或float对象来添加所有这些,例如:

rings=rings.rstrip('\n')
rings_int = int(rings)
sum_of_rings += rings_int

如果一行中有数字和其他文字的混合,请使用正则表达式首先拉出数字部分:

import re

m = re.search('\d+', rings)
if m:
    rings_int_str = m.group()
    rings_int = int( rings_int_str )
    sum_of_rings += rings_int

我使用了很多单独的变量来澄清这一点,但这些步骤可以合并,例如:

sum_of_rings += int( text_file.readline() )

P.S。如果您收到该错误,则可能是在打印语句中,您尝试打印avg而不会以某种方式将其转换为字符串。其中任何一个都有效:

avg=score_sum/5.0
print "%f" % (avg)
print str(avg)