我有一个要重组的平面文本文件(infile)。它有几个制表符分隔的列,看起来像这样:
Person1 HEIGHT=60;WEIGHT=100;AGE=22
Person2 HEIGHT=62;WEIGHT=101;AGE=25
Person3 HEIGHT=64;WEIGHT=110;AGE=29
我希望它看起来像这样:
PERSON HEIGHT WEIGHT AGE
1 60 100 22
2 62 101 25
3 64 110 29
您可以看到第二列实际上包含几个以分号分隔的标题/值字段,我想将它们重组为典型的列标题行。
现在我有:
for line in infile:
line = line.split("\t")
line_meta = line[1].split(";")
print line_meta
我认为最好的解决方案是现在循环 line_meta 变量,使用正则表达式来检测标题名称(检测以多个大写字母开头并以“=”结尾的字符串),将每个标题作为键添加到字典中,然后将字符串的其余部分存储为值。然后,对于下一行,如果检测到相同的标题,只需附加到现有字典。
任何人都可以帮助使用此代码或提供有关如何继续的反馈吗?
谢谢
编辑: 感谢您的回复。我为这个例子简化了我的数据,但这是实际元列之一的样子(仍然是 ; 分隔,但值类型是混合的):
P=0.9626;IPU=.$.+1T.+1T.+;IRF=ncRNA;IUC=UTR3;IGN=NCRNA00115;IGI=NCRNA00115,RP11-206L10.16-001;IET=0;IEO=0;IEN=.;IHT=0;IHVC=0;IHD=.;IHI=.;IHN=.;IDI=.;IDN=.;ITMAF=.;ITAMR=.;ITASN=.;ITAFR=.;ITEUR=.;ITNRB=+A;ISF=.;ISD=.;ISM=.;ISX=.;