[问题] 找不出问题在哪里

楼主: sariel0322 (sariel)   2015-03-21 10:57:38
我想要将一些ID资料的属性分门别类
(特定ID的位置例如出现在row[1]跟row[-1]的各算一类,row[1]~row[-1]算一类,不管row[0])
因此用set想说避免调资料重复
以下是我的code:
http://ppt.cc/63Ex
我读取的资料大概是这种类型:
http://ppt.cc/wnWU
http://ppt.cc/Yytn
只有长度的问题
跑出来的结果:
http://ppt.cc/k72m
(上色是为了对答案,也是错误的地方,重复了)
遇到的问题:
原本依照我的分类应该会变成
>>> 特定的ID , 档案名称 , 该ID属性 (e.g.Never present at C-terminal)
一个特定的ID跟一个档案里面应该只有一个属性
但不知道为何变成
>>> 特定的ID , 档案名称 , 该ID属性 (e.g.Never present at C-terminal)
>>> 同样的ID , 同样档案名称 , 不一样ID属性 (多了 Never present at either terminal)
个人认为应该是判断式那边出了问题(not in 的部分?),但是检查了很久还是不知道问题在哪
还请大家帮我看一下到底哪里出了问题
我原本认为应该一个 ID 只会跑进一个if,但很明显不是...
作者: flarehunter (Range)   2015-03-21 12:03:00
首先把变量名称写的更清楚一点可能可以找到bug像是if i in n and i in c and i in m就完全不知道是什么意思
作者: ccwang002 (亮)   2015-03-21 13:44:00
如果你有 sample data 我想写一篇怎么使用 pdb debugpdb 是 Python 内建的 debugger我好像懂为什么会重复了,你的 if 可能不是 exculsive所以第一个 if 执行完就会再执行下一个 if,就会有两行可以每个 if 中加个 continue 或用 if ... elif 结构等等,你把 8 种状况都写了我不觉得是 if 的问题感觉是不同 filename 或 row 有重复的 domain你的 domain 判断在 row 的 for loop 里喔每读一行都会把 domain 分类写出来,这感觉很会重复你是要读一个档分析一次而不是读“一行”分析一次吧?是的,你要把 for i in domain 移到 csv.reader(f) 外现在流程是:开 csv,读一行 + 更新 ncm + 判断 domain你想要的:开 csv,读一行 + 更新 cnm,读完判断 domai简单来说,for in domain 往外缩排一格,然后要注意n/m/c.clear()。改成每读档的时候 n = set() 重建吧

Links booklink

Contact Us: admin [ a t ] ucptt.com