【发布时间】:2012-08-07 06:20:21
【问题描述】:
我正在使用 numpy.genfromtxt 导入 CSV 文件。
要导入的数据有一个列名标题,其中一些列名包含genfromtxt 认为无效的字符。具体来说,一些名称包含“#”和“”。输入数据无法更改,因为它是由我无法控制的其他来源生成的。
使用names=True 和comments=None,我无法引入我需要的所有列名。
我尝试过覆盖numpy.lib.NameValidator.deletechars=None,但这不会影响实际使用的 NameValidator 类实例。
我知道deletechars 的存在是因为recarray 可能会像访问属性一样访问字段。但是,我必须能够读入包含无效字符的列名,即使在读入时这些字符被剥离。
有没有办法强制NameValidator 不检查无效字符,或者修改它检查的字符?我无法修改 numpy/lib/_iotools.py,因为我不是 root,修改共享安装会很糟糕。
【问题讨论】:
-
你不能自己提取标题然后跳过它以通过
genfromtxt进行纯数据提取吗? -
@JakobS。 - 我目前正在试验,阅读标题行,然后使用正则表达式查找哪些名称包含无效字符并替换它们。但是,这对我来说并不是一个同质的解决方案,我希望 numpy 能够绕过 NameValidator 或至少重新定义 deletechars。
-
您好,虽然我已经根据我对问题的最佳猜测给出了答案,但如果您提供一个简化但完整的 csv 文件示例,可能会有所帮助。
标签: python numpy genfromtxt