web-dev-qa-db-fra.com

python pandas read_csv ne reconnaît pas \ t dans un fichier délimité par des tabulations)

J'essaie de lire les données séparées par des tabulations dans des pandas:
test.txt:

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

J'importe test.txt comme suit:

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

La trame de données résultante a 1 colonne. Le\t n'est pas reconnu comme onglet.

Si je remplace\t par un "onglet clavier", le fichier est analysé correctement. J'ai également essayé de remplacer '\ t par\t et/t et je n'ai pas eu de chance.

Merci d'avance pour votre aide.
Omar

PS: Capture d'écran http://imgur.com/a/nXvW

8
Omar

Le \t dans votre fichier est une barre oblique inverse réelle suivie d'un t. Ce n'est pas un tab. Vous allez devoir utiliser des caractères d'échappement sur votre paramètre 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

Ou

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éponse au commentaire

Le r indique qu'il s'agit d'une chaîne brute et les caractères spéciaux doivent être interprétés comme le caractère brut. C'est pourquoi dans une solution, j'ai indiqué que la chaîne était brute et n'avait que deux barres obliques inverses. Dans l'autre, j'ai dû échapper à chaque barre oblique inverse avec une autre barre oblique inverse, laissant quatre barres obliques inverses.

12
piRSquared