2017-02-16 142 views
2

我在.dfx文件中有一些數據,我試圖將它作爲帶熊貓的csv讀取。但它有一些熊貓不能讀的特殊字符。它們也是分隔符。 I attached one line from it數據讀取 - csv

當我打印文件時,「DC4」被刪除。 SI被正確讀取爲空格。我嘗試了一些編碼(utf-8,latin1等),但沒有成功。 I attached the printed first line as well. I marked the place where the characters should be.

我的代碼很簡單:

import pandas 

file_log = pandas.read_csv("file_log.DFX", header=None) 

print(file_log) 

我希望我是清楚的,有人有一個想法。 在此先感謝!

編輯:

輸入。 LINK:drive.google.com/open?id=0BxMDhep-LHOIVGcybmsya2JVM28

預期輸出:

88.4373 0 12.07.2014/17:05:22 38.0366 38.5179 1.3448 31.9839 
30.0070 0 12.07.2014/17:14:27 38.0084 38.5091 0.0056 0.0033 
+0

你能提供一個示例輸入(不是圖像)和期望的輸出嗎? –

+0

--------------------------------- – koger23

+0

我加了你需要的東西,反正我也解決不了,如果我只是評論它的特殊字符。 – koger23

回答

5

通過檢查在十六進制example.DFX(與xxd),兩個分離器是0x140x0f因此。

閱讀與使用python引擎多重分隔符的CSV:

import pandas 

sep1 = chr(0x14) # the one shows dc4 
sep2 = chr(0x0f) # the one shows si 
file_log = pandas.read_csv('example.DFX', header=None, sep='{}|{}'.format(sep1, sep2), engine='python') 

print file_log 

,你會得到:

  0 1     2  3  4  5  6 7 
0 88.4373 0 12.07.2014/17:05:22 38.0366 38.5179 1.3448 31.9839 NaN 
1 30.0070 0 12.07.2014/17:14:27 38.0084 38.5091 0.0056 0.0033 NaN 

。好像是在最後一個空列。但我相信你可以處理。

+0

工作正常。非常感謝你! – koger23

0

編碼在這裏似乎是ASCII。 DC4代表「設備控制4」,SI代表「換入」。這些是ASCII文件中的控制字符,不可打印。因此,當您發出「print(file_log)」時,您看不到它們,儘管它可能會根據您的終端執行某些操作(例如\ n會做一個換行符)。

嘗試在解釋器中輸入file_log以獲取該變量的表示形式,並檢查是否包含這些特殊字符。很可能你會在表達式中看到DC4爲'\ x14',這意味着十六進制14. 然後,您可以使用字符串操作(如replace)在程序中進一步處理這些字符串。