关于python:如何将此列表一起添加?

how do i add this list together? I keep on getting an error

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 (most recent call last): File
"C:/Users/chris/Desktop/Helia.py", line 32, in
ReadText() blah blah, 1 File"C:/Users/chris/Desktop/Helia.py", line 28, in ReadText
total += x TypeError: unsupported operand type(s) for +=: 'int' and 'list'

文件内容如下:

废话,1这是He3lia的档案六

感谢您的帮助和洞察力。你们太棒了!


这里有两个问题:(1)numblist是列表列表,而不是简单列表;(2)列表值是字符串而不是整数。

您可以使用extend方法而不是append方法来解决第一个问题。你也可以用+=来做同样的事情。

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

以下是已发布代码的更新版本,可以解决这些问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.extend(stuff)
    print(numblist)
    for x in numblist:
        total += int(x)
        print (total)
    text_file.close()

ReadText()


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

你前面有一些有趣的Python发现!从stuff = re.findall(...)开始到完成print (total)的6行迭代代码可以用python编写成两行:

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

阅读关于Python中的理解以了解更多信息。


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

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


我想很容易理解给出的错误。

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

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

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

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

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