Text Datei analysiert Zeilen und gibt sie als Spalten aus

8

Ich versuche eine Testdatei zu parsen. Die Datei hat Benutzername, Adresse und Telefon im folgenden Format:

%Vor%

Nur für fast 10k Benutzer:) was ich tun möchte ist, diese Zeilen in Spalten umzuwandeln, zum Beispiel:

%Vor%

Ich würde es lieber in bash machen, aber wenn Sie wissen, wie man es in Python macht, wäre das auch großartig, die Datei mit diesen Informationen befindet sich in / root / docs / information. Irgendwelche Tipps oder Hilfe würden sehr geschätzt werden.

    
tafiela 11.10.2012, 02:47
quelle

11 Antworten

5

Eine Möglichkeit mit GNU awk :

%Vor%

Ergebnisse:

%Vor%

Beachten Sie, dass ich das Ausgabedateitrennzeichen ( OFS ) auf zwei Tabstoppzeichen ( \t\t ) gesetzt habe. Sie können dies zu jedem beliebigen Zeichen oder Zeichensatz ändern. HTH.

    
Steve 11.10.2012, 03:00
quelle
3

Mit einem kurzen Perl one-liner:

%Vor%

AUSGABE

%Vor%     
Gilles Quenot 11.10.2012 03:02
quelle
2

Mit Paste können wir die Zeilen in der Datei verbinden:

%Vor%     
Guru 11.10.2012 03:04
quelle
1

Dies scheint im Grunde das zu tun, was Sie wollen:

%Vor%

Ausgabe:

%Vor%     
martineau 11.10.2012 03:02
quelle
1

Ich weiß, dass du awk nicht erwähnt hast, aber es löst dein Problem gut:

%Vor%     
Hai Vu 11.10.2012 03:06
quelle
1

Die meisten Lösungen hier formatieren nur die Daten in der Datei, die Sie gerade lesen. Vielleicht ist das alles was du willst.

Wenn Sie die Daten tatsächlich analysieren möchten, fügen Sie sie in eine Datenstruktur ein.

Dieses Beispiel in Python:

%Vor%

Jetzt haben Sie die Freiheit zu sortieren, das Format zu ändern, in die Datenbank zu legen, usw.

Dies druckt Ihr Format mit diesen Daten, sortiert:

%Vor%

Drucke:

%Vor%

Dies wird nach dem Nachnamen, dem im dict-Schlüssel verwendeten Vornamen sortiert.

Drucken Sie es jetzt nach der Ortsvorwahl sortiert:

%Vor%

Drucke:

%Vor%

Da Sie die Daten jedoch in einem indizierten Wörterbuch gespeichert haben, können Sie sie als Tabelle anstatt nach Postleitzahl drucken:

%Vor%

Drucke:

%Vor%     
user648852 11.10.2012 16:44
quelle
0

Sie sollten in der Lage sein, dies mit der Methode split() in einer Zeichenfolge zu analysieren:

%Vor%     
Brendan Long 11.10.2012 02:59
quelle
0

Sie können über Linien iterieren und sie in Spalten wie diesem drucken -

%Vor%     
Abhishek Mishra 11.10.2012 03:03
quelle
0
%Vor%     
ChenQi 11.10.2012 03:12
quelle
0

Eine Lösung, die sed verwendet.

%Vor%
  1. Die erste Pipe, sed '/^$/d' , entfernt die Leerzeilen.
  2. Die zweite Pipe, sed 'N; s:\n:\t\t:; N; s:\n:\t\t:' , kombiniert die Zeilen.
%Vor%     
Yamaneko 11.10.2012 04:30
quelle
0

In Python:

%Vor%     
Nathan Villaescusa 11.10.2012 02:57
quelle

Tags und Links