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感谢任何帮助和见解。你们真棒!
答案 0 :(得分:0)
我想理解给出的错误非常简单。
total
是一个整数,如total = 0
中所定义。 numblist
是一个列表。另外,根据模块stuff
上的documentation,re
是一个列表。
所以你有一个整数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