def export_csv_standard_units(name):
cursor.execute("select distinct(standard_units) from activities where standard_type='IC50' ")
result_standard_units_distinct = cursor.fetchall()
cursor.execute("select standard_units from activities where standard_type='IC50' ")
result_standard_units = cursor.fetchall()
field_standard_units = ()
cnt = []
for result in result_standard_units_distinct:
field_standard_units = field_standard_units + (result_standard_units_distinct,)
length = int(len(field_standard_units))
for i in result_standard_units:
for j in length:
if field_standard_units(j) == result_standard_units(9):
cnt[j] = cnt[j] + 1
field = (field_standard_units, cnt)
export_field = open('%s_standard_units.csv' %name, 'wb')
export_csv_field = csv.writer(export_field)
export_csv_field.writerows([field])
export_field.close()
运行我的python文件时遇到一些问题。 我想制作用于数据计数的csv.file 喜欢这个..
standard_units计数 standard_unit1 123 standard_unit2 234
但是,它有这样的错误。
File "manage.py", line 42
for j in length:
TypeError: 'int' object is not iterable
这是什么意思可迭代?
答案 0 :(得分:2)
就像您的错误消息所说:int
s不可迭代。使用range
for j in range(length):
...
如果length
为10,range(length)
将为您提供值0..9。
您不必提前实际计算长度 - 而是可以enumerate
field_standard_units
:
for j, unit in enumerate(field_standard_units):
if unit == result_standard_units(9): # What's 9?
...
注意:
如果您的范围非常大,请使用xrange
,因为range
会创建一个列表,因此其所有成员都会占用内存,而xrange
会创建一个与enumerate
类似的生成器。 / p>