2017-02-02 4 views
1

J'ai un fichier délimité par des tabulations. Une de ces colonnes est saisie de texte, qui contient souvent des onglets.Caractère délimiteur dans la colonne d'attributs

Il est donc quelque chose comme

ID   Phone    Text     Time 
######  ########   blahblah \t\t i know YYYY-MM-DD HH:MM:SS 

Alors, quand je l'ai lu dans le fichier (python) et séparés par des onglets, il salit clairement les choses. Existe-t-il un moyen de cibler des onglets spécifiques? Dites "délimiter le premier, deuxième et dernier" dans une ligne? Existe-t-il un moyen efficace de supprimer les onglets dans le champ de texte? Je peux les remplacer par n'importe quoi, un -, un espace, peu importe qu'ils ne soient pas importants.

Répondre

1

Si vous lisez dans les lignes, et vous savez qu'il n'y aura pas des onglets dans les autres champs que vous pourriez faire quelque chose comme ceci:

f = open('your_file.txt','r') 

id,phone,text,tm = [],[],[],[] 
for i,line in enumerate(f): 
    if i == 0: 
     continue 
    fields = line.strip().split('\t') 
    id.append(fields[0]) 
    phone.append(fields[1]) 
    text.append('\t'.join(fields[2:-1])) 
    tm.append(fields[-1]) 

f.close() 

Cela permettra de préserver les onglets dans votre champ de texte ainsi que. Vous pouvez les joindre avec un personnage différent si vous voulez vous en débarrasser.

+0

Cela semble fonctionner sur plusieurs des exemples de test que j'ai vu. Se sent bête, parce que cela aurait dû être la solution évidente dès le départ. Merci! – Jibril

+0

Pas de problème, je suis content qu'il ait pu travailler pour vous :) – tmwilson26