CSV 文件,TypeError:float() 参数必须是字符串或实数,而不是 'NoneType'



我正在读取一个csv文件,然后将内容存储在列表中。以下是items.csv文件的内容:

name, price, quantity
'Phone', 100, 3
'Laptop', 1000, 5
'Cable', 10, 3
'Mouse', 50, 5
'Keyboard', 75, 3

现在我正在尝试获取列表中项目的价格,但我得到的不是字符串,而是返回的Nonetype数据。请帮我解决这个问题。以下是我遇到问题的代码片段:这个片段是在类方法中编写的。

import csv
@classmethod
def instantiate_from_csv(cls):
with open('items.csv', 'r') as f:            
reader = csv.DictReader(f)
items = list(reader) 
for item in items:
Item(
name = item.get('name'),
price = float(item.get('price')),
quantity = int(item.get('quantity'))
)

为什么它返回非类型数据?这是我得到的错误:

Traceback (most recent call last):
File "c:UserssumitDesktopOOPS7_classMethod.py", line 59, in <module>
Item.instantiate_from_csv()
File "c:UserssumitDesktopOOPS7_classMethod.py", line 48, in instantiate_from_csv
price = float(item.get('price')),
TypeError: float() argument must be a string or a real number, not 'NoneType'

如果CSV文件的内容与所讨论的内容完全相同,则必须指定quotechar并在分隔符后去掉初始空白:

import csv
with open("items.csv", "r") as f:
reader = csv.DictReader(f, quotechar="'", skipinitialspace=True)
items = list(reader)

for item in items:
price = float(item.get("price"))
print(price)

打印:

100.0
1000.0
10.0
50.0
75.0

相关内容

最新更新