PythonでSQLクエリの出力を解析しようとしています(組織の制約のためにcx_Oracleをインストールできないため、日付が意味をなすようにするための方法は、ここで。Python split( ' n')は、行の終わりの代わりに途中で改行する
がサブプロセスのコマンド
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', '']
の私の出力ですが、私はすべての空白とタブを削除しようとしているが、私に頭痛を与えている1つの列があります。
私が以前の出力から余分なものを削除しようとすると、以下のコードe、最後の列は、同じ行に残るのではなく、次の行にバンプされます。私はそれがおそらく最後の列の先頭の\ t(タブ)のためだと知っていますが、私はそれを削除することはできません。私はストリップ、lstrip、rstrip、regexesを使って何時間も試してきましたが、役に立たないものです。以下は
for line in output1:
if(line != ''):
print ",".join([str(x.strip()) for x in line.split(',')])
私の最終的な出力ですが、次の行の最後の列
05/02/2016 19:53:52,ABC,O,ACTIVE
49
05/02/2016 19:53:52,ABC,O,INACTIVE
11
と私は欠けているものを見つけるいくつかの助けを必要としています。あなたは各行があなたのリストに空の文字列の間の文字列になりたいように、すべての入力を事前に感謝:)
--Jim
あなたの 'output1'は、'最後の列 "が実際に' communications() '出力の新しい行にあることを示しているようです。 'ACTIVE'の直後に2番目の文字列がどのように終わっているかを見て、' \ t 49''が3番目の文字列であることを見てください。あなたは外部コマンドの出力があなたの考え方に見えると確信していますか? – user2357112
おそらく外部コマンドが行折り返しを挿入して、独自の行折り返しをしようとしています。 – user2357112
あなたのコードは、空文字列を無視し、コンマ区切りの値でコンマの周りの空白を削除します。しかし、リストの別々の要素を1つの行にまとめることはできません。 – Barmar