我该如何将这个列表一起添加?我一直在收到错误

时间:2016-06-07 23:58:44

标签: python list

import re
def ReadText()

    total = 0
    text_file = open('Heliatext.txt', 'r')
    lines = text_file.read()
    numblist = []
    print(lines)
    print(len(lines))
    stuff = re.findall(r'\d+', lines)
    numblist.append(stuff)
    print(numblist)
    for x in numblist:
        total += x
        print (total)

    text_file.close()
ReadText()

大家好,所以我试图抓取一个简单的整数文本文件,将它们放入一个列表中,然后将它们全部加在一起。我一直在寻找如何做到这一点的stackoverflow,据我所知,这种方式应该工作,但我继续得到这个错误

  

Traceback(最近一次调用最后一次):文件   " C:/Users/chris/Desktop/Helia.py" ;,第32行,在       ReadText()blah blah,1 File" C:/Users/chris/Desktop/Helia.py" ;,第28行,在ReadText中       total + = x TypeError:+ =的不支持的操作数类型:' int'和'列出'

文件内容是这样的:

等等,等等 这是在he3lia的文件中 6

感谢任何帮助和见解。你们真棒!

4 个答案:

答案 0 :(得分:0)

我想理解给出的错误非常简单。

total是一个整数,如total = 0中所定义。 numblist是一个列表。另外,根据模块stuff上的documentationre是一个列表。

所以你有一个整数total和一个列表 numblist,并试图将它们加在一起。不会发生

要解决此问题,请始终使用相同的类型。例如

for x in stuff: # and not for x in numblist
     total += int(x)
     print (total)

在这种情况下,您将拥有一个变量total,它将是stuff中显示的所有整数的总和。

答案 1 :(得分:0)

您需要将列表的条目转换为整数。 试试这个:

for x in stuff:
    total += int(x)

答案 2 :(得分:0)

re.findall返回字符串,因此您需要将数字字符串强制为int。 Python的强类型不会让你一起添加字符串。

你前面有一些令人愉快的Python发现!你的6行迭代代码stuff = re.findall(...)和完成print (total)可以在Python中用两行编写:

numblist = [int(num) for num in re.findall(r'\d+', lines)]
print(sum(numblist))

在Python中阅读comprehensions以了解更多内容。

答案 3 :(得分:0)

这里有两个问题:(1)sudo vi /etc/paths /usr/local/bin /usr/local/sbin /usr/bin /bin /usr/sbin /sbin 是列表而不是平面列表,(2)列表值是字符串而不是整数。

您可以使用numblist方法而非extend方法修复第一个问题。您也可以使用append执行相同的操作。

您可以通过将字符串转换为整数来解决第二个问题,即使用+=而不是int(x)

这里是已发布代码的更新版本,用于修复这些问题:

x