def func():
import csv
file=open("cmiday.csv")
x,y=[],[]
reader=csv.DictReader(file)
for row in reader:
if(type(row["max_rel_hum"])%1==0):
continue
if(type(row["precip"])%1==0):
continue
if(row["max_rel_hum"]>100):
continue
if(row["max_rel_hum"]<0):
continue
if (row["precip"]>10):
continue
if(row["precip"]<0):
continue
x.append(row["max_rel_hum"])
y.append(row["precip"])
print x
print y
我正在尝试将csv文件中的数据收集到列表x和y中。我不希望row [“max_rel_hum”]的任何值为整数或大于100或小于0.同样,我不希望row [“precip”]的任何值大于10或更小当我尝试运行该函数时,我收到此错误:
>>> func()
Traceback (most recent call las
File "<stdin>", line 1, in <m
File "hw.py", line 7, in func
if(row["max_rel_hum"]%1==0)
ValueError: incomplete format
请帮忙。感谢
答案 0 :(得分:0)
CSV中的值是字符串,而不是整数。您期望%
做模数,但在字符串上它会进行字符串格式化。
你需要这样的东西:
if ( int(row["max_rel_hum"]) % 1 == 0):
你需要在所有行中int()
执行<
和>
- 它们是对字符串的有效操作,但会按字母顺序进行比较,而不是数字比较,并且不会给出您期望的结果。
您根本不需要type()
行if
。