背景:
Table$Gene=Gene1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 2872 208 0.928 0.00484 0.918 0.937
1 2664 304 0.822 0.00714 0.808 0.836
2 2360 104 0.786 0.00766 0.771 0.801
3 2256 48 0.769 0.00787 0.754 0.784
4 2208 40 0.755 0.00803 0.739 0.771
5 2256 48 0.769 0.00787 0.754 0.784
6 2208 40 0.755 0.00803 0.739 0.771
Table$Gene=Gene2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 2872 208 0.938 0.00484 0.918 0.937
1 2664 304 0.822 0.00714 0.808 0.836
2 2360 104 0.786 0.00766 0.771 0.801
3 2256 48 0.769 0.00787 0.754 0.784
4 1000 40 0.744 0.00803 0.739 0.774
#There is a new line ("\n") here too, it just doesn't come out in the code.
我希望你能够把上面的文件转换成下面这样的输出结果,看起来很简单:
Gene1 0.755
Gene2 0.744
即每个部分中每个基因和生存列中的最后一个数字。
我尝试过多种方法,包括使用正则表达式、将文件读入列表并使用“.next()”方法。下面是我尝试过的一段代码:
fileopen = open(sys.argv[1]).readlines() # Read in the file as a list.
for index,line in enumerate(fileopen): # Enumerate items in list
if "Table" in line: # Find the items with "Table" (This will have my gene name)
line2 = line.split("=")[1] # Parse line to get my gene name
if "\n" in fileopen[index+1]: # This is the problem section.
print fileopen[index]
else:
fileopen[index+1]
如您在问题部分所见,我试图在这个尝试中表达:
如果列表中的下一项是新行,则打印该项;否则,下一行就是当前行(然后我可以拆分该行以提取我想要的特定数字)。
如果有人能更正代码,让我看看我做错了什么,我会非常感激。
fileopen[index+1]
你尝试实现什么不是很清楚,请问你能解释一下你的意图吗? - miindlek