Python CSV:读取fi时出现非类型错误

2024-06-26 17:47:51 发布

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

我的代码正在返回:

Traceback (most recent call last):
  File "/Users/Justin/Desktop/Program 5/Weather_Program#5.py", line 55, in <module>
    if date[0:] == None:
TypeError: 'NoneType' object is not subscriptable

我确切地知道这个错误发生在什么地方和原因,但我不知道如何修复它。任何想法都将不胜感激。在

我在csv中读取的数据是左栏中的日期,右栏是降水量。20000101是2001年1月1日,0是0英寸的降雨量。在

^{pr2}$

代码:

import csv

january   = []
february  = []
march     = []
april     = []
may       = []
june      = []
july      = []
august    = []
september = []
october   = []
november  = []
december  = []

def read_cell(column, row):
    """Input x & y coordinate for CSV file: Returns information in cell"""
    with open('precipitation.csv', 'r') as f:
        reader = csv.reader(f)
        y_count = 0
        for n in reader:
            if y_count == row:
                cell = n[column]
                return cell
            y_count += 1

stormy = 0
row_number = 0

while stormy < 1:
    with open('precipitation.csv', 'r') as f:
            date = read_cell(0,row_number)
            rain = read_cell(1,row_number)

            if date[0:] == None:
                stormy += 1
                break

            elif date[4:6] == "01":
                january.append(read_cell(1,row_number))
                row_number += 1                

            elif date[4:6] == "02":
                february.append(read_cell(1,row_number))
                row_number += 1

            elif date[4:6] == "03":
                march.append(read_cell(1,row_number))
                row_number += 1

            elif date[4:6] == "04":
                april.append(read_cell(1,row_number))
                row_number += 1

            elif date[4:6] == "05":
                may.append(read_cell(1,row_number))
                row_number += 1               

            elif date[4:6] == "06":
                june.append(read_cell(1,row_number))
                row_number += 1               

            elif date[4:6] == "07":
                july.append(read_cell(1,row_number))
                row_number += 1

            elif date[4:6] == "08":
                august.append(read_cell(1,row_number))
                row_number += 1               

            elif date[4:6] == '09':
                september.append(read_cell(1,row_number))
                row_number += 1               

            elif date[4:6] == '10':
                october.append(read_cell(1,row_number))
                row_number += 1               

            elif date[4:6] == '11':
                november.append(read_cell(1,row_number))
                row_number += 1

            elif date[4:6] == '12':
                december.append(read_cell(1,row_number))
                row_number += 1               


print(january)

Tags: csv代码innumberreaddateifcount
3条回答
  1. 你打开CSV两次

  2. 每次读取单元格时,都会重新扫描整个CSV文件

  3. 第55行的异常与源代码不匹配

  4. 你没有处理空行/单元格。在while循环的顶部,您需要:

    if date is None:
        continue
    

您是否认为问题可能在输入文件中? 其他的可能性:几个月内领先的零位可能是问题所在。在

你会考虑使用熊猫的数据帧吗?你可以过滤得到月份并将这些每月的结果存储到每个月的数据帧中

CSV文件很容易导入到数据帧中。如果你需要更多的帮助,我会给你的

while循环的唯一停止条件是if date[0:] == None。这意味着循环将继续,直到某个时候文件没有另一行,此时date和{}将被设置为None。此时,在stop条件下,您正在尝试执行None[0:],这是抛出错误的原因。在

请改为尝试if date == None。在

相关问题 更多 >