【问题标题】:Data reading - csv数据读取 - csv
【发布时间】:2017-02-16 19:42:25
【问题描述】:

我在 .dfx 文件中有一些数据,我试图将其读取为带有 pandas 的 csv。但它有一些熊猫不读取的特殊字符。它们也是分隔符。I attached one line from it

当我打印文件时,“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)

我希望我很清楚并且有人有想法。 提前致谢!

编辑:

输入。链接: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

【问题讨论】:

  • 您能否提供一个示例输入(不是图像)和预期输出?
  • --------------------------------
  • 我添加了你需要的东西,我还是解决不了,如果我只是评论它会删除特殊字符。

标签: python csv pandas dataframe


【解决方案1】:

通过检查 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

它的末尾似乎有一个空列。但我相信你能应付得来。

【讨论】:

  • 工作正常。非常感谢!
【解决方案2】:

这里的编码似乎是ASCII。 DC4 代表“设备控制 4”,SI 代表“移入”。这些是 ASCII 文件中的控制字符,不可打印。因此,当您发出“print(file_log)”时,您看不到它们,尽管它可能会根据您的终端执行某些操作(如 \n 会换行)。

尝试在您的解释器中输入 file_log 以获取该变量的表示形式并检查是否包含这些特殊字符。您可能会在表示中看到 DC4 为 '\x14',这意味着十六进制 14。 然后,您可以在程序中使用替换等字符串操作进一步处理这些字符串。

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 2021-03-26
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2018-09-07
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多