问题描述
我在.dfx文件中有一些数据,我尝试将其作为csv与熊猫一起阅读。 但是它具有一些熊猫无法读取的特殊字符。 它们也是分隔符。
当我打印文件时,“ DC4”被删除。 SI正确读取为空格。 我尝试了一些编码(utf-8,latin1等),但没有成功。
我的代码很简单:
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
1楼
通过检查example.DFX十六进制(带有xxd
),两个分隔符分别为0x14
和0x0f
。
使用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
似乎结尾处有一个空列。 但我相信您可以解决。
2楼
此处的编码似乎是ASCII。 DC4代表“设备控制4”,SI代表“移入”。 这些是ASCII文件中的控制字符,不可打印。 因此,尽管发出“ print(file_log)”,您可能看不到它们,尽管它可能会根据您的终端进行某些操作以查看此内容(例如\\ n会换行)。
尝试在解释器中输入file_log以获取该变量的表示形式,然后检查是否包括那些特殊字符。 很有可能您将在DC4表示形式中看到“ \\ x14”,表示十六进制14。然后,您可以通过使用诸如replace之类的字符串操作在程序中进一步处理这些字符串。