0
我的代码返回:Python的CSV:类型错误不支持的操作“斜面和列表”
Traceback (most recent call last):
File "/Users/Justin/Desktop/Program 5/Weather_Program#5.py", line 111, in <module>
month = sum(january)/10
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我确切地知道,为什么这个错误发生,但我不知道如何解决它。任何想法将不胜感激。
我在csv
中读取的数据是左栏中的日期和右栏中的降水量。 20000101
将在2001年1月1日,0将是0英寸的雨。 Na被排除,它在第二个while循环中正常工作。有一次,我转换的数字,以花车我碰上错误
20000101 0
20000102 NA
20000103 12.2
20000104 0.3
代码:
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 == 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
while "NA" in january:
january.remove("NA")
while "NA" in february:
february.remove("NA")
while "NA" in march:
march.remove("NA")
while "NA" in april:
april.remove("NA")
while "NA" in may:
may.remove("NA")
while "NA" in june:
june.remove("NA")
while "NA" in july:
july.remove("NA")
while "NA" in august:
august.remove("NA")
while "NA" in september:
september.remove("NA")
while "NA" in october:
october.remove("NA")
while "NA" in november:
november.remove("NA")
while "NA" in december:
december.remove("NA")
january = [float(i) for i in january]
january = sum(float(january))/10
print(january)
这只是列表的一个例子。我正在处理5000+个单元,所以这不起作用。 – Wakedude
@Wakedude,它不一定是一个文字列表 - 任何返回序列的表达式都可以。 –
谢谢!这为我修好了。真的很感谢帮助。 – Wakedude