以前处理的一般都是用tab分割的文档,即tsv,这次的题目既然是csv,也就是Comma-separated values,那就csv吧,先搞到一个csv的文档,很简单,我有很多tsv的文档,用excel打开,然后另存为csv的文件格式就可以了。
然后打开terminal,
我用的是Pillars.csv,数据源是YGOB(Yeast Genome Order Browser)的Pillars.tab,在命令行里键入python,然后
>>> for line in open("Pillars.csv"): ... print line.strip().split(",") ... ['---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', 'YAL068C', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---'] 中间省略n行... ['Kpol_397.9', 'TPHA0A01390', 'TBLA0H01080', 'NDAI0J00760', 'NCAS0B03300', 'KNAG0A04960', 'KAFR0B05920', 'CAGL0E00913g', 'Suva_2.332', 'Skud_4.426', 'Smik_4.412', 'YDR168W', 'Anc_8.361', 'ZYRO0F14278g', 'TDEL0F04850', 'KLLA0D17226g', 'AGL154W', 'Ecym_4213', 'SAKL0H14674g', 'KLTH0G11330g', 'Kwal_27.11349', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---', '---'] >>>
本来到此可以结束的,但我想再添个足,把这个文档转化成tab分割的文档保存城Pillar.tab然后和源文档比较一下
>>> open("Pillars.tab","w").write(open("Pillars.csv").read().replace(",","\t")) >>>转换很简单,一行就可以搞定,然后是对比
>>> print open("Pillars.tab").read() == open("Pillars.original.tab").read() False >>>咦,为啥是Flase呢?出现了什么问题么?我记得windows的csv的回车和linux下有的时候不一样,一个是"\r\n"另一个是"\n",有没有可能是这个原因呢?
>>> content = [] >>> for line in open("Pillars.csv"): ... content.append(line.strip().replace(",","\t")) ... >>> open("Pillars.tab","w").write("\n".join(content)) >>> print open("Pillars.tab").read() == open("Pillars.original.tab").read() False我已经把回车都换成"\n"了,为什么还是False,不死心,用Python逐行对比一下:
>>> for (original,now) in zip(open("Pillars.original.tab"),open("Pillars.tab")): ... if original != now: ... original ... now ... '---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\tKlac_1.trna15S\tAgos_6.trna6S\t---\tSklu_8.trna41S\tKthe_5.trna19S\tKwal_47.trna13S\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\n' '---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\tKlac_1.trna15S\tAgos_6.trna6S\t---\tSklu_8.trna41S\tKthe_5.trna19S\tKwal_47.trna13S\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---\t---' >>>终于发现问题了,原来源文档的最后一行的结尾有个"\n",而转换过后的文档没有,嗯,到这里为止,这个题目应该算是会了吧,嘿嘿,期待明天的问题,python csv模块。
===============================================================================
附:
这些“习题”源自陈皓叔叔的博文《程序员练级技术攻略》:
http://coolshell.cn/articles/4990.html
我希望尝试跟着他推荐的方式练级,同时把每日的心得放到博客上来供大家分享,也希望各位程序员大牛们指导。