我想计算平均流量,但我很难在python中将字符串转换为float。 这是我在记事本++中的代码:
import cookielib,urllib2,urllib,string
import cx_Oracle
import datetime
import string
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
total_flow = 0
count = 0
page = opener.open("http://cdec.water.ca.gov/cgi-progs/queryCSV?station_id=vns&sensor_num=20&dur_code=E&start_date=2016-04-14&end_date=2016-04-15&data_wish=View+CSV+Data")
for line in page:
a=line.split(',')
b = float(a)
count+=1
total_flow= total_flow+b[-1]
# here a=[date,time,flow]; so b[-1] is flow data
ave_flow = total_flow/count
print ave_flow
当我运行此脚本时,收到错误消息:
b=float(a)
type error: float() argument must be a string or a number
然而,当我在python中直接将字符串转换为float时,它起作用了。我不知道发生了什么。
答案 0 :(得分:1)
这里的a是一个不是字符串的列表。你应该有另一个for循环来处理列表中的每个元素。
答案 1 :(得分:1)
a=line.split(',')
a是这里的列表,尝试类似:
b=float(a[0])
答案 2 :(得分:1)
a = line.split(',')
返回一个列表。这就是你收到错误的原因。
答案 3 :(得分:0)
它有效。