Python3.6读取csv文件并使用float作为dict键

2024-04-19 08:55:49 发布

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

我正在编写第一个python脚本来读取支票簿寄存器。寄存器详细信息在csv文件中:

date,chk num,description,amount,cleared state

此外,csv文件是个人支票簿和从银行下载的交易的组合。理想情况下,每个记录都有两份副本:一份来自支票簿,一份来自银行。实际上,有些银行记录没有出现在支票簿列表中,还有一些其他的奇怪之处。在

如果我在perl中执行此操作,那么我将为每个唯一性级别提供一个哈希。我尝试在这里使用dicts,但遇到了一个键值问题。具体地说,我的第一个唯一性关键是交易金额。这可以是一个正的或负的浮点值,正好有两个十进制数字,没有千位分隔符:la 1234567.89或-0.24,等等

^{pr2}$

结果文件中的第一个值是-2844.29。我在if dataset.get(row[3]) != None:行得到一个keyError。它抱怨钥匙“-2844.29”。在

csv文件没有“引用”这个值,所以我假设它被视为float。然后我尝试用

^{3}$

但这告诉我:ValueError: Unknown format code 'f' for object of type 'str'。我错过了什么?在


Tags: 文件csv脚本date记录详细信息交易银行
1条回答
网友
1楼 · 发布于 2024-04-19 08:55:49

您可以使用type()函数检查对象的类型。E、 g组:

print(type(row[3]))

您还可以检查dataset对象中的键的类型,看看它是否匹配。在

无论如何,csv.reader不会转换它在csv文件中读取的内容。您的row对象是strlist,如果您的dataset键也是str,则不需要强制转换它。您得到的错误是因为您试图使用.f代码(实际上专用于数字类型)格式化str。在

但是

当您尝试dataset.get(row[3])时,您的代码应该已经工作了。我认为您的数据集没有正确构建(我在这里看不到这个对象的初始化),您应该尝试完全显示它,以查看它是否真的以字符串形式包含键-2844.29(您可以检查您的{}是否实际包含str而不是{}类型的键。在

相关问题 更多 >