mah*_*ood 0 python if-statement
我有这样一个文件:
Chr10 31 . T C 35.1 . DP=7;AF1=1;CI95=1,1;DP4=0,0,7,0;MQ=23;FQ=-48 GT:PL:GQ 1/1:68,21,0:39**
Chr10 445 . G T 34 . DP=23;AF1=0.5;CI95=0.5,0.5;DP4=7,5,6,3;MQ=19;FQ=12.3;PV4=1,6.2e-08,1,0.27 GT:PL:GQ 0/1:64,0,39:42
Chr10 447 . A C 93 . DP=26;AF1=1;CI95=1,1;DP4=0,0,13,8;MQ=19;FQ=-90 GT:PL:GQ 1/1:126,63,0:99
Chr10 449 . G C 5.46 . DP=28;AF1=0.4999;CI95=0.5,0.5;DP4=9,4,6,4;MQ=23;FQ=7.8;PV4=0.69,4.3e-08,0.037,1 GT:PL:GQ 0/1:34,0,130:34
Chr10 481 . C T 67 . DP=55;AF1=0.5;CI95=0.5,0.5;DP4=17,22,10,5;MQ=25;FQ=70;PV4=0.22,1.5e-07,1,1 GT:PL:GQ 0/1:97,0,152:99
Run Code Online (Sandbox Code Playgroud)
我想创建一个循环,找到1/1第10列中的所有行.
这是我写的脚本:
pilup= open ("libary_ts.sorted.pilup", "rb+")
with open ("select.txt", "wb+") as ch:
for data in ch:
e=data.split()
if e[9] == "1/1":
Run Code Online (Sandbox Code Playgroud)
但是我知道这是错误的,因为if e[9] ==如果第10列具有精确的1/1,并且正如您在示例数据中看到的那样,我总是有这样的事情:
1/1:213,60,0:99
Run Code Online (Sandbox Code Playgroud)
要么
0/1:43,0,118:46
Run Code Online (Sandbox Code Playgroud)
我只是想知道我应该使用什么来使这个if语句正常工作?有没有任何符号表示包含?我在任何地方都找不到它!提前致谢!
如果它可以出现在列中的任何位置:
if "1/1" in e[9]:
...
Run Code Online (Sandbox Code Playgroud)
如果它必须出现在列的开头,如示例中所示:
if e[9].startswith("1/1"):
...
Run Code Online (Sandbox Code Playgroud)
或者,如果列始终包含以冒号分隔的值:
if e[9].split(':')[0] == "1/1":
...
Run Code Online (Sandbox Code Playgroud)
最后一个是三个中最严格的,这将是我个人的偏好.