我想以numpy数组的形式加载csv文件。每一行都包含带空格的字符串字段。我尝试了numpy中提供的loadtxt()和genfromtxt()方法。默认情况下,这两种方法都将空格视为分隔符,并将字符串中的每个单词分隔为单独的列。有没有办法使用loadtxt()或genfromtxt()加载这种类型的数据,或者我必须为它编写自己的代码?
我的文件中的样例行:
826##25733##Emanuele Buratti## ##Mammalian cell expression
这里,##是分隔符,空格表示缺少的值。
发布于 2013-05-21 12:05:40
我认为您的问题是默认注释字符#与您的分隔符冲突。我可以像这样加载你的数据:
>>> import numpy as np
>>> np.loadtxt('/tmp/sample.txt', dtype=str, delimiter='##', comments=None)
array(['826', '25733', 'Emanuele Buratti', ' ', 'Mammalian cell expression'],
dtype='|S25')您可以看到,dtype已自动设置为最大长度字符串。如果dtype=object很麻烦,你可以使用它。顺便说一句,由于您的数据不是数值型的,因此我可能建议您使用csv模块而不是numpy来完成这项工作。
发布于 2013-05-21 12:13:27
以下是wim建议的csv等价物:
import csv
with open('somefile.txt') as f:
reader = csv.reader(f, delimiter='##')
rows = list(reader)正如@wim指出的注释,这并不能真正起作用,因为分隔符必须是一个字符。因此,如果您更改上述设置,以便使用delimiter='#',则会得到以下结果:
[['826', '', '25733', '', 'Emanuele Buratti', '', ' ', '', 'Mammalian cell expression']]https://stackoverflow.com/questions/16661880
复制相似问题