2017-02-16 103 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)在程序中进一步处理这些字符串。