numpy.genfromtxt错误地解析带有转义字符的列名

时间:2015-01-14 11:23:21

标签: python string csv escaping genfromtxt

我正在使用以下代码从CSV文件中读取大量数据

data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

根据docstring,使用名称Keyword和True值,意味着数据是在1d结构化数组中构建的,其中原始CSV文件的列可以通过其名称访问,从文件的第一行获取

虽然这一般起作用,但似乎没有像我期望的那样解析名称字符串作为原始字符串。 r'一些字符串'

e.g。文件中的字符串

s = "LNAGain(Corner=nom_8;modelFiles=model.paths.scs;cur_ctl_counter=1;vsupply=1.65;temperature=85) Y"
#correct

被解析为

s="LNAGain_Cornernom_8modelFilesmodelpathsscscur_ctl_counter1vsupply165temperature85_Y"
#wrong

所以它错过了等号,分号和括号。 有没有办法强制阅读为原始字符串?或者这是numpy方法中的错误?

如果我只是用

读取该行
inputfile.readline() 

一切都正确地解析/我想要的。

提前感谢!

1 个答案:

答案 0 :(得分:1)

我通过将pandas模块用于csv导入而不是numpy解决了我的问题。见http://pandas.pydata.org

它似乎以更智能的方式解析包含数据的文本文件。

所以,而不是做

import numpy as np
data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

我做

import pandas as pd
data = pd.read_csv(inputfile.name, sep=',')

一切都很好。 :)

当然,我必须编辑我的代码才能使用pandas方法来处理数据对象,但是更改的地方会很小。

e.g。访问数据列我会用

data[data.columns[column_index]]

而不是

data[data.dtype.names[column_index]