繁体   English   中英

我如何在python中做一个if循环,说“如果某列(在本例中为10)中存在某种情况(在本例中为1/1)?

[英]how can I make an if loop in python to say " if something (in this case 1/1) exist in one of my column (in my case 10)?

我有一个像这样的文件:

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

我想做一个循环,查找所有在第10列中具有1/1的行。

这是我写的脚本:

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":

但我知道这是错误的,因为if e[9] ==表示列10是否具有精确的1/1,并且正如您在示例数据中所看到的那样,我总是这样:

1/1:213,60,0:99

要么

0/1:43,0,118:46

我只是想知道如果if语句正常工作,应该使用什么来使它正常工作? 是否有包含的符号? 我在任何地方都找不到! 提前致谢!

如果它可以出现在列中的任何位置:

if "1/1" in e[9]:
  ...

如果它必须出现在示例中的列开头,请执行以下操作:

if e[9].startswith("1/1"):
  ...

或者,如果该列始终包含冒号分隔的值:

if e[9].split(':')[0] == "1/1":
  ...

最后一个是这三个中最严格的一个,这将是我个人的喜好。

首先, open ("select.txt", "wb+")将删除文件的内容。 我认为您正在迭代pilup

您可以使用in运算符来测试是否在第10个元素的任意位置出现1/1

if "1/1" in e[9]:

或者,使用startswith检查第十个元素是否以"1/1"开头:

if e[9].startswith("1/1"):

如果1/1始终位于该列的开头,则可以使用startswith字符串方法:

if e[9].startswith("1/1")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM