题目来自生信技能树论坛
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
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦