2017-02-16 32 views
2

私は.dfxファイルでいくつかのデータを持っており、私はpandasで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) 

私は明らかだったし、誰かがアイデアを持っている願っています。 ありがとうございます!

EDIT:

入力。 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

xxdと)ヘクスにexample.DFXを調べることにより、2枚のセパレータは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が16進数の14を意味する '\ x14'と表示されることです。 replaceのような文字列操作を使用してプログラム内でこれらの文字列をさらに処理できます。

関連する問題