1

我正在使用 pyVCF 读取 VCF 文件,返回的sample['AD']可以是 a listlike[8, 14]或 an intlike 5

如果我使用','.join(map(str,sample['AD'])),它将停止int返回为“TypeError:'int' object is not iterable”。

在这两种情况下,我如何编写它来打印它?


回复评论:

只是普通的代码。但是 VCF 文件带有两种AD.

import vcf
vcf_reader = vcf.Reader(filename='xxx.vcf.gz',compressed=True)
for record in vcf_reader.fetch(theChrid):
    for sample in record.samples:
4

2 回答 2

0

您可以if-else在初始化输入值时使用map()

情况1:

>>> sample['AD'] = [8,14]
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'8,14'

案例2:

>>> sample['AD'] = 5
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'5'
于 2017-12-13T13:52:23.433 回答
-1

检查结果是列表还是整数的实例

  if instanceof(result,int):
       #print as int
  else:
       #as list
于 2017-12-13T13:50:28.147 回答