2017-02-02 2 views
1

Ich habe eine Datei, die Tab Delimited ist. Eine dieser Spalten ist eine Texteingabe, die oft Registerkarten enthält.Trennzeichen in Attributspalte

So ist es so etwas wie

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

Also, wenn ich Datei in (Python) gelesen und getrennt durch Tabulatoren es Dinge klar vermasselt. Gibt es eine Möglichkeit, auf bestimmte Tabs zu zielen? Sagen Sie "Abgrenzung auf der ersten, zweiten und letzten" innerhalb einer Linie? Gibt es eine effiziente Möglichkeit, die Tabs innerhalb des Textfelds zu entfernen? Ich kann sie durch irgendetwas ersetzen, ein -, ein Leerzeichen, spielt keine Rolle, sie sind nicht wichtig.

Antwort

1

Wenn Sie in den Zeilen lesen, und Sie wissen, dass es in den anderen Feldern nicht Registerkarten, die Sie so etwas tun könnte:

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() 

Dies wird erhalten die Tabs in Ihrem Textfeld auch. Du kannst ihnen mit einem anderen Charakter beitreten, wenn du sie loswerden willst.

+0

Dies scheint bei einigen der Testbeispiele zu funktionieren, die ich gesehen habe. Fühlt sich albern an, denn das hätte von Anfang an die offensichtliche Lösung sein sollen. Vielen Dank! – Jibril

+0

Kein Problem, ich bin froh, dass es für dich arbeiten konnte :) – tmwilson26