如何在python中将字符串转换为for循环?

时间:2016-04-18 18:45:52

标签: python string

我想计算平均流量,但我很难在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时,它起作用了。我不知道发生了什么。

4 个答案:

答案 0 :(得分:1)

这里的a是一个不是字符串的列表。你应该有另一个for循环来处理列表中的每个元素。

答案 1 :(得分:1)

a=line.split(',')

a是这里的列表,尝试类似:

b=float(a[0])

答案 2 :(得分:1)

a = line.split(',')

返回一个列表。这就是你收到错误的原因。

答案 3 :(得分:0)

好吧,我明白了。列表中有一些不可见的符号和字符串,所以我不能简单地将字符串转换为数字。 我改变了 一个= line.strip()。分裂( “”) B =浮子(一个[-1])

它有效。