【发布时间】:2014-06-24 19:14:11
【问题描述】:
感谢您的耐心等待,因为我对 python 还很陌生。输入文件是一个制表符分隔的表格。
import numpy as np
#from StringIO import StringIO
inputfile=raw_input('Filepath please: ')
fieldnames='Reference Position, Type, Length, Reference, Allele, Linkage, Zygosity, \
Count, Coverage, Frequency, Hyper-allelic, Forward/reverse balance, Average quality, \
Overlapping annotations, Coding region change, Amino acid change'
fieldtypes='int,str,int,str,str,str,str,int,int,float,str,float,float,str,str,str'
with open(inputfile) as f:
storage=np.genfromtxt(f, skip_header=1, delimiter='\t', names=fieldnames, dtype=fieldtypes)
print storage
我得到一个 ValueError: 元组的大小必须匹配字段数。
帮助?
编辑:
嗯,在执行@Wooble 的建议后,没有更多错误了……
EDIT2:
但现在的问题是,在我打印存储之后,所有 dtype str 的单元格都是空字符串('')。这是为什么呢?
编辑3: 我通过将上面的 str 类型更改为 |S# 来解决空字符串问题,其中 # 是整数。
【问题讨论】:
-
输入文件中有什么? (顺便说一句,使用真实文件的内容制作 StringIO 是......有点傻。StringIO 用于当您需要类似文件的对象但没有真实文件时。)而且,进一步,不要
.close()在上下文管理器中打开的文件;关键是上下文管理器将其关闭。 -
(另外,使用
raw_input而不是使用input并告诉用户包含引号......) -
感谢@Wooble 的帮助。我正在根据您的建议进行编辑。此外,输入文件是一个制表符分隔的 txt 表格。
-
制表符分隔的表格中有空单元格……这会影响什么吗?
-
除此之外:如果您使用的是命名列以及混合的数字和非数字数据,那么使用
pandas可能会比使用裸 numpy 更幸运。