2016-06-08 48 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