#python #if-statement
#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
и я хотел бы создать цикл, который находит все строки, которые есть 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":
но я знаю, что это неправильно, поскольку if e[9] ==
означает, что столбец 10 имеет точное значение 1/1, и, как вы можете видеть в примерах данных, которые я помещаю, у меня всегда есть что-то вроде этого:
1/1:213,60,0:99
или
0/1:43,0,118:46
Я просто хотел знать, что я должен использовать, чтобы заставить этот оператор if работать должным образом? Есть ли какой-либо символ, который говорит contain ? Я нигде не мог его найти! Заранее спасибо!
Комментарии:
1. Чтобы отформатировать код (или необработанные входные файлы) в stackoverflow, выберите его и нажмите
Ctrl K
.
Ответ №1:
Если оно может появиться в любом месте столбца:
if "1/1" in e[9]:
...
Если оно должно отображаться в начале столбца, как в вашем примере:
if e[9].startswith("1/1"):
...
В качестве альтернативы, если столбец всегда содержит значения, разделенные двоеточием:
if e[9].split(':')[0] == "1/1":
...
Последний является самым строгим из трех и будет моим личным предпочтением.
Комментарии:
1. Спасибо за ваш действительно полный ответ 🙂
Ответ №2:
Прежде всего, open ("select.txt", "wb ")
будет удалено содержимое файла. Я предполагаю, что вы повторяете pilup
.
Вы можете использовать in
оператор, чтобы проверить 1/1
, встречается ли где-нибудь в десятом элементе:
if "1/1" in e[9]:
В качестве альтернативы, используйте startswith
, чтобы проверить, начинается ли десятый элемент, ну, с "1/1"
:
if e[9].startswith("1/1"):
Ответ №3:
If 1/1
всегда будет в начале этого столбца, вы можете использовать метод startswith
string:
if e[9].startswith("1/1")