栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

生信编程实战第12题(python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生信编程实战第12题(python)

题目来自生信技能树论坛

image.png


image.png

其实编程的题目最终要的是要搞清楚要做什么
先看看json文件是什么样的

less -S modencodemetaData.json

image.png

根据题目的要求,就是json文件中红线框出来的这类给整理一下,整理成题目中的样子。
我的想法就是:
逐行读取
利用python中的正则表达式去匹配这些我们想整理的部分,构建键值对,最后打印出来

这里正则表达式中的pattern是

"s+"(.+)"s:s"(.+)","

这个意思就是:
一个或多个空格+"+一个或多个除换行符之外的任意字符+"+一个空格+:+一个空格+"+一个或多个除换行符之外的任意字符+"+,
这样我只需要将每个line右边的空格换行符去掉,然后对每行去匹配这个pattern
就能得到需要整理的行
给出代码

import sysimport re
args=sys.argv
filename=args[1]
aDict={}with open (filename) as fh :
   pattern = re.compile("s+"(.+)"s:s"(.+)",")   for line in fh:
     line=line.rstrip()
     mth=pattern.search(line)     if mth:           #如果匹配上,mth就不是空
        a = mth.group(1)  #取出第一个括号里的内容
        b = mth.group(2)  #取出第二个括号里的内容
        if a not in aDict:
           aDict[a]=[b]        else:
           aDict[a].append(b)for k,v in aDict.items():
    z='t'.join(v)            #因为v是列表,这一步就是把列表转换成字符串,方便查看
    print(k,z,sep="t")

这里想提醒自己一点:
字典中想构建一个key对应多个value

if a not in aDict:
           aDict[a]=[b]else:
           aDict[a].append(b)

这种应该很容易想到
还有列表转字符串的方法不要忘记
"".join(list)

最后看一下结果吧

python3 exc.py modencodemetaData.json |less -S

image.png

导入excel看看

image.png



作者:天秤座的机器狗
链接:https://www.jianshu.com/p/8f66b86f7e32


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/222855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号