web-dev-qa-db-ja.com

python pandas read_csvがタブ区切りファイルの\ tを認識しない

次のタブで区切られたデータをパンダに読み込もうとしています:
test.txt:

col_a\tcol_b\tcol_c\tcol_d
4\t3\t2\t1  
4\t3\t2\t1 

次のようにtest.txtをインポートします。

pd.read_csv('test.txt',sep='\t')

結果のデータフレームには1つの列があります。\tはタブとして認識されません。

\ tを「キーボードタブ」に置き換えると、ファイルは正しく解析されます。また、 '\ tを\ tと/ tに置き換えてみましたが、うまくいきませんでした。

よろしくお願いします。
オマー

PS:スクリーンショット http://imgur.com/a/nXvW

8
Omar

ファイル内の\tは、実際のバックスラッシュとそれに続くtです。 ではありませんa tabです。 sepパラメータでエスケープ文字を使用する必要があります。

pd.read_csv('test.txt', sep=r'\\t', engine='python')

   col_a  col_b  col_c  col_d
0      4      3      2      1
1      4      3      2      1

または

pd.read_csv('test.txt', sep='\\\\t', engine='python')

   col_a  col_b  col_c  col_d
0      4      3      2      1
1      4      3      2      1

コメントへの応答

rは、それが未加工の文字列であり、特殊文字が未加工の文字として解釈されることを示しています。そのため、1つの解決策では、文字列が未加工であり、バックスラッシュが2つしかないことを示しました。もう1つは、4つのバックスラッシュを残して、別のバックスラッシュで各バックスラッシュをエスケープする必要がありました。

12
piRSquared