Ich versuche, die Ausgabe einer SQL-Abfrage in Python zu analysieren (kann nicht Cx_Oracle aufgrund von org Einschränkungen installieren, müssen daher den Subprozess gehen Art und Weise.Python Split (' n') bricht eine Zeile in der Mitte statt nach dem Ende der Zeile
Hier ist meine Ausgabe eines subprocess Befehl
output1 = sqlplus.communicate()[0].split('\n')
['', '05/02/2016 19:42:40,ABC,O\t\t\t\t ,ACTIVE', '\t 49', '', '05/02/2016 19:42:40,ABC,O\t\t\t ,INACTIVE', '\t 11', '']
Damit das Datum Sinn macht, versuche ich alle weißen Leerzeichen und Tabulatoren zu entfernen, aber es gibt eine Spalte, die mir Kopfschmerzen schenkt
Wenn ich versuche, zusätzliche Sachen aus früheren Ausgaben mit unter Kabeljau zu entfernen e, die letzte Spalte wird in die nächste Zeile verschoben, anstatt in derselben Zeile zu bleiben. Ich weiß, dass es wahrscheinlich wegen der führenden \ t (Tab) in der letzten Spalte ist, aber ich kann es nicht entfernen. Ich versuche seit Stunden mit Strip, Lstrip, Rstrip, Regexes, aber ohne Erfolg.
for line in output1:
if(line != ''):
print ",".join([str(x.strip()) for x in line.split(',')])
Unten ist meine letzte Ausgabe, aber mit der letzten Spalte in der nächsten Zeile
05/02/2016 19:53:52,ABC,O,ACTIVE
49
05/02/2016 19:53:52,ABC,O,INACTIVE
11
etwas Hilfe benötigen, herauszufinden, was ich fehle. Vielen Dank im Voraus für alle Ihre Eingaben :)
--Jim
Ihr 'output1' scheint zu zeigen, dass die" letzte Spalte "tatsächlich * bereits * auf einer neuen Zeile in der' communicate() 'Ausgabe ist. Sehen Sie sich an, wie die zweite Saite unmittelbar nach 'ACTIVE' endet und dann' \ t49'' die dritte Saite ist. Sind Sie sicher, dass die Ausgabe des externen Befehls so aussieht, wie Sie es sich vorstellen? – user2357112
Vielleicht fügt der externe Befehl Zeilenumbrüche ein, um einen eigenen Zeilenumbruch zu erstellen. – user2357112
Ihr Code ignoriert die leeren Zeichenfolgen und entfernt Leerzeichen in Komma-getrennten Werten um die Kommas. Es kombiniert jedoch keine einzelnen Elemente der Liste zu einer einzigen Zeile. – Barmar