2016-06-08 98 views
1

在大熊猫read_table,让我们说我有一个我想与read_table阅读以下字符串:防止大熊猫落下制表符

A\tB\tC\t\t\tD\t\tE\t\t\t\t\t\t\t

其中\ t为制表符。如果我使用read_table像这样:

with open('file.dat') as f: 
    df = pd.read_table(f, delimiter = '\r\n\') 

它会读取FILE.DAT每一行,但它会从每行删除尾随\ t和从示例行只保留此:

A\tB\tC\t\t\tD\t\tE

在另一方面,如果我只是从文件中直接读取行,像这样:

line = [] 
with open('file.dat') as f: 
    for l in f: 
    line.append(l) 

我可以确认\ t为存在的文件中。

为什么会发生这种情况,更重要的是我该如何预防它?

+0

因为\ t不分隔符,\ r \ n是用于窗户的换行符。我的预期输出正是我上面所说的,单个列,每行在file.dat中包含一行,这样df ['line'] ='A \ tB \ tC \ t \ t \ tD \ t \ tE \ t \ t \ t \ t \ t \ t \ t'。我不能显示实际的数据,因为它是敏感的,但我复制了数据,并从我在ipython笔记本上执行df ['line'] [0](第一个输出)和line [0](第二个输出)时用ABCD替换值 – CHP

+0

pandas read_csv和最后一个逗号导致解析问题有问题。我想这就是为什么最后一次被丢弃。 – Merlin

+0

我敢打赌,它会删除最后一个实际文本后面的所有\ char字符 - 我想这不太好。哦,我想我需要另一种方法。 – CHP

回答

0

默认值为:

read_table(filepath_or_buffer, sep='\t', delimiter=None, 

尝试改变分离器:

pd.read_table(f, delimiter = '\r\n\', sep=',') 
+0

我不明白这个答案。是不是分隔符,并用不同的名称分隔相同的参数?如果我有机会,以防万一,我会给它一个镜头。 – CHP

+0

这使我相信不同的'delimiter:str,默认无 sep.'替代参数名称来自http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_table.html但当然我我会稍微给它一点,然后回报。 – CHP

+0

我认为'分隔符'部分工作正常。行正确分隔。这只是在最后一个文本字符之后的所有\ t字符都从每个正确分隔的行中被剥离了 - 我目前正在试图构建一个性能解决方案来获取数据中的数据,但使用python csv阅读器正确解析文本。 – CHP