首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有空字符的numpy.genfromtxt csv文件

带有空字符的numpy.genfromtxt csv文件
EN

Stack Overflow用户
提问于 2014-07-23 01:00:54
回答 1查看 1.1K关注 0票数 1

我正在开发一个科学的绘图脚本,该脚本旨在从Agilent的Chemstation软件输出的csv文件中创建图形。

当文件来自Chemstation的一个版本(用于液相色谱的版本)时,我使脚本工作得很好。

现在我正试着把它移植到我们的GC (气相色谱法)上。由于某种原因,此版本的chemstation在其输出的任何文本文件中的每个字符之间插入空值。

我试图使用numpy.genfromtxt将x,y数据输入python,以便创建图形(使用matplotlib)。

我最初用的是:

代码语言:javascript
运行
复制
data = genfromtxt(directory+signal, delimiter = ',') 

来加载数据。当我用我们的GC生成的csv文件做这件事时,我会得到一个所有'nan‘值的数组。如果我将dtype设置为none,则会得到如下所示的“字节字符串”:

代码语言:javascript
运行
复制
b'\x00 \x008\x008\x005\x00.\x002\x005\x002\x001\x007\x001\x00\r'

我需要的是一个浮点数,上面的字符串是885.252171。

有人知道我该怎么去吗?

为了明确起见,我在Chemstation上找不到任何会影响它的输出的设置,只是没有创建带有null的文件。

谢谢

杰夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 03:27:15

如果您的文件使用BOM编码为utf-16-le,并且所有实际unicode编码点(BOM除外)都小于128个,那么您应该能够使用codecs.EncodedFile实例将文件从utf-16转换为ascii。下面的示例适用于我。

这是我的测试文件:

代码语言:javascript
运行
复制
$ cat utf_16_le_with_bom.csv 
??2.0,19
1.5,17
2.5,23
1.0,10
3.0,5

前两个字节,fffe是BOM U+FEFF:

代码语言:javascript
运行
复制
$ hexdump utf_16_le_with_bom.csv 
0000000 ff fe 32 00 2e 00 30 00 2c 00 31 00 39 00 0a 00
0000010 31 00 2e 00 35 00 2c 00 31 00 37 00 0a 00 32 00
0000020 2e 00 35 00 2c 00 32 00 33 00 0a 00 31 00 2e 00
0000030 30 00 2c 00 31 00 30 00 0a 00 33 00 2e 00 30 00
0000040 2c 00 35 00 0a 00                              
0000046

下面是python脚本genfromtxt_utf16.py (为Python3更新):

代码语言:javascript
运行
复制
import codecs
import numpy as np

fh = open('utf_16_le_with_bom.csv', 'rb')
efh = codecs.EncodedFile(fh, data_encoding='ascii', file_encoding='utf-16')
a = np.genfromtxt(efh, delimiter=',')
fh.close()

print("a:")
print(a)

对于python 3.4.1和numpy 1.8.1,脚本工作如下:

代码语言:javascript
运行
复制
$ python3.4 genfromtxt_utf16.py 
a:
[[  2.   19. ]
 [  1.5  17. ]
 [  2.5  23. ]
 [  1.   10. ]
 [  3.    5. ]]

请确保没有将编码指定为file_encoding='utf-16-le'。如果包含endian后缀,则BOM不会被删除,并且不能将其转换为ascii。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24900247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档