如何避免使用sum时出现不支持的类型错误

2024-10-02 00:39:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我试图从一个文件中获取数据,将其放入一个列表,然后得到每行的总和。我尝试剥离列表中除int和float之外的任何内容,并确保文件中只有数字。如果有人能帮助我,我将非常感激。谢谢你的阅读

(问题代码)

with open("InputFileData.csv") as file:
    SampleTotalHours = file.readlines();

TotalHours = []

for element in SampleTotalHours:
     TotalHours.append(element.strip())

Sum = sum(TotalHours[0])
print(Sum)

(内容“InputFileData.csv”)

40.1,39.7,40,38 
36,36,35.5,35.8
40,41.6,40.3,40
20.4,22.8,20,20

(产出)

Traceback (most recent call last):
    File "D:\Assignment 6 Files\PAtest.py", line 10, in <module>
        Sum = sum(TotalHours[0])
    TypeError: unsupported operand type(s) for +: 'int' and 'str'

Tags: 文件csvin内容列表forelementfile
3条回答

有点像这样。对于每一行,在逗号处拆分,将字段转换为浮点数,求浮点数之和。您可能会发现使用csv模块更容易,但使用此数据集并不会给您带来太多好处

TotalHours = []
with open("InputFileData.csv") as file:
    for line in file:
        parts = [float(k) for k in line.strip().split(',')]
        TotalHours.append( sum(parts) )
print(TotalHours)

这对我来说很好:

TotalHours = 0

with open("InputFileData.csv") as file:
    for line in file:
        for number in line.strip().split(","):
            if number.replace('.', "").isnumeric():
                TotalHours += float(number)

print(TotalHours)

readlines()将返回字符串列表,本例中的第一项是“40.1,39.7,40,38”。 要获取和,首先需要用分隔符拆分字符串,并在获取和之前将每个值转换为浮点数

TotalHours = []

for element in SampleTotalHours:
    hoursAsStrings = element.split(',')
    hoursAsFloats = [float(hourString) for hourString in hoursAsStrings]
    TotalHours.append(sum(hoursAsFloats))

TotalHours是一个列表,其中每个值都是其对应行的总和

相关问题 更多 >

    热门问题