2015-02-11 90 views
0
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數據統計 這樣的..TypeError:'int'對象在Python中不可迭代

standard_units算 standard_unit1 123 standard_unit2 234

,但是,它的主要錯誤是這樣的。

File "manage.py", line 42 
    for j in length: 
    TypeError: 'int' object is not iterable 

這是什麼意思iterable?

+0

像數組? – Daenarys 2015-02-11 08:58:28

回答

2

像你的錯誤消息說:int s是不可迭代的。使用range

for j in range(length): 
    ... 

如果length是10,range(length)會給你值0..9。

你不必去實際計算提前長度 - 而不是你可以enumeratefield_standard_units

for j, unit in enumerate(field_standard_units): 
    if unit == result_standard_units(9): # What's 9? 
     ... 

注: 使用xrange如果你的範圍是非常大的,因爲range創建一個列表,從而它的所有成員都佔用了內存,而xrange創建了一個像enumerate一樣的生成器。

相關問題