Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Python27 TypeError:类型+='int'和'str'的操作数不受支持_Regex_Python 2.7 - Fatal编程技术网

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

Regex Python27 TypeError:类型+='int'和'str'的操作数不受支持,regex,python-2.7,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)

请帮我了解这里发生了什么。我的目标是创建一个函数,读取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()
def sum(xs):
    total = 0
    for x in xs:
        total += x
    return total
除了numSum(它给出标题中提到的错误)之外,所有内容都打印得很好。

re.findall返回字符串列表,类似于[foo,bar,baz]。sum的实现是这样的:

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()
def sum(xs):
    total = 0
    for x in xs:
        total += x
    return total
因此,在某个时候,它会尝试执行一行,比如total=0+foo,然后就结束了,因为Python不知道如何向字符串添加int。您知道所有字符串实际上都包含int这一事实并不重要,因为表达式1+'1'的计算结果可能是'11'或'2',Python不会猜出是哪个


当你阅读每一行时,你应该把每一个字符串都转换成一个int。这应该可以解决你的问题

@ZeroPiraeus,事实上,我想要一个更简单的例子。鉴于OP看起来很新,这很可能是一个家庭作业问题,我不想只是分发解决方案。非常感谢。我添加了一个列表理解,将所有字符串转换为整数,结果成功了。”newL2=[intitem for item in newL]@Muzi,不用担心。如果这个答案解决了您的问题,您可能希望以绿色勾号接受它。您也可能会发现编辑我的答案以包含您的解决方案是有建设性的。可能的