В вашем вопросе говорится, что столбец 3 содержит имена генов. Я предполагаю, что на самом деле вы ввели следующие данные:
column1 column2 Rv0729,Rv0993,Rv1408
column1 column2 Rv0162c,Rv0761c,Rv1862,Rv3086
column1 column2 Rv2790c
Каждое имя гена в столбце 3 содержит ведущую подстроку Rv
. Таким образом, мы можем посчитать их в python следующим образом:
$ python -c "import sys;print map(lambda x: x.split()[2].count('Rv'),sys.stdin.readlines())" < input.txt
[3, 4, 1]
Полученный список показывает количество генов в каждой строке, в соответствующем порядке. Если мы хотим сделать список более подробным и учесть возможность того, что гены могут не содержать строку "Rv" (но сохранить предположение, что столбец 3 - это строка значений, разделенных запятыми), мы можем сделать следующее:
#!/usr/bin/env python
import sys
with open(sys.argv[1]) as fd:
for index,line in enumerate(fd):
columns = line.strip().split()
num_genes=len(columns[2].split(","))
print("Line "+str(index)+" contains "+str(num_genes))
Тестовый запуск:
$ ./count_genes.py input.txt
Line 0 contains 3
Line 1 contains 4
Line 2 contains 1