不知道NoneType来自哪里

时间:2019-05-14 04:31:22

标签: python python-3.6 nonetype

我正在关注有关如何转换大数据集的YouTube视频教程。 Here是YouTube教程。

我正在视频中输入代码。一切都很好,直到他定义了total_deposits()函数的那一部分为止(大约48:00标记)。仅供参考,我正在键入演示者正在键入的内容(他发布的代码可以在他的github here中找到)。

基本上,我遇到一个NoneType错误,但主持人却没有,我不确定为什么。我对total_deposits()函数的基本理解是,它将遍历JSON数据结构中的所有DEPSUM键,并不断将它们加起来直到到达最后一个“行”。我对这个问题的理解是我的代码正在累加数字,但是当遇到NoneType元素时却不知道该怎么办,我什至不知道在哪里找到{{1} }是。

这是我收到的错误:

NoneType

我的想法是,我从他的github source复制并粘贴了数据源;我不知道是否以这样的方式粘贴数据:是否创建了某种实例或行,其中File "etl.py", line 40, in total_deposits total += int(row['DEPSUM'].replace(",","")) AttributeError: 'NoneType' object has no attribute 'replace' 是自动填充的。数据源是一个很大的csv文件,因此我只是将其粘贴到文本文件中。所有其他功能似乎运行良好。

此外,我浏览了数据源的JSON版本,但没有发现NoneType的任何空值,这是函数正在浏览的内容。

这是我的数据源问题吗?也许我正在使用的python版本与演示者的python版本的行为方式不同。我构建了类似这样的循环:

DEPSUM

运行良好;看起来循环结构本身不是问题。

有关我到目前为止的代码,请参见下文:

for row in reader:
    print(row['NAMEBR']

这是一张图像,显示我拥有的JSON文件没有任何空的或我知道的import csv import json from pprint import pprint # all of this code is courtesy of Engineer Man # https://www.youtube.com/watch?v=BqmtKmGNnoo # I downloaded his data.csv file from his github repository # https://github.com/engineer-man/youtube/blob/master/stream019/data.csv data = open("data.csv") reader = csv.DictReader(data) # convert the csv file to a json format (easier to read) def output_json(): content = json.dumps([row for row in reader], indent = 4) with open('data.json', 'w') as file: file.write(content) # convert the csv file to an xml format (whatever floats your boat, man) def output_xml(): xml = ['<?xml version="1.0" encoding="UTF-8"?>'] for row in reader: xml.append('<bank?') for k, v in row.items(): xml.append(' <{}>{}</{}>'.format(k, v, k)) xml.append('</bank?') with open("data.xml", "w") as file: file.write('\n'.join(xml)) ### This is the function that causes the issues ### # now to extract information from the data itself def total_deposits(): total = 0 for row in reader: total += int(row['DEPSUM'].replace(",","")) print('total: ${}'.format(total_deposits)) # for row in reader: # print(str(row['DEPSUM']).replace(",","")) print('[1] convert this to json') print('[2] convert this to xml') print('[3] get total deposits') choice = int(input('what would you like to do? : ')) if choice ==1: output_json() if choice ==2: output_xml() if choice ==3: total_deposits() print('Executing [' + str(choice) + ']' + " now...")

Screenshot of search for nulls or empty fields in <code>DEPSUM</code> field

0 个答案:

没有答案