Python27 TypeError:类型的不支持的操作数+ ='int'和'str'

时间:2017-01-16 10:09:36

标签: regex python-2.7

请帮助我了解这里发生的事情。我的目标是创建一个函数,它将读取“input.txt”并返回文本文档中每行的最小值,最大值和平均值。文件内的文字如下:

min:1,2,3,4,5,6
max:1,2,3,4,5,6
avg:1,2,3,4,5,6

我的代码如下所示:

import re

def process():

    file = open("input.txt", "r")

    for line in file:
        newL = re.findall("\d+", line)

    minimum = min(newL)
    maximum = max(newL)
    length = len(newL)
    numSum = sum(newL)

    print newL
    print minimum
    print maximum
    print length
    print numSum

    file.close()

process()

除了numSum之外,所有内容都打印得很好,这给出了标题中提到的错误。

1 个答案:

答案 0 :(得分:1)

re.findall会返回一个字符串列表,例如["foo", "bar", "baz"]sum的实现是这样的:

def sum(xs):
    total = 0
    for x in xs:
        total += x
    return total

因此,在某些时候,它会尝试执行像total = 0 + "foo"这样的行并摔倒,因为Python不知道如何将int添加到{{1} }}。您知道所有字符串实际上包含string的事实并不重要,因为表达式int可能明智地评估为1+'1''11',而Python赢得了#{1}}。猜猜哪个。

当你在每一行中读到时,你应该将每个字符串转换为int。那应该解决你的问题